光栅化渲染器(一)配置glut环境,完成窗体绘制

发表于2018-07-04
评论0 1.7k浏览
现在主流两种渲染方式就是光线跟踪和光栅化了,现代大多数显卡用的都是基于光栅化的渲染方式。下面就和大家介绍光栅化渲染器系列的第一篇,如何去配置glut环境,完成窗体绘制。

环境准备:VS2017

第一步:创建工程

文件-》新建项目-》Visual C++ -》控制台应用程序

第二步:导入NuGet包

选择项目-》右键点击-》管理NuGet程序包-》浏览-》输入Nupengl

-》选择第一个安装

第三步:配置环境
// GLEW
//#define GLEW_STATIC
#include <GL\glew.h>
#include <GL/freeglut.h> 
// GLFW
#include <GLFW/glfw3.h>
#include <iostream>
#include <string>
using namespace std;
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const char* SCREEN_TITLE = "光栅渲染器";

头文件引入上述代码

第四步:完成屏幕窗口绘制
//<<<<<<<<<<<<<<<<<<<<<<< myInit >>>>>>>>>>>>>>>>>>>>
void myInit(void)
{
    glClearColor(0.0, 0.0, 0.0, 0.0);      // 设置背景颜色为亮白
    glColor3f(1.0f, 1.0f, 1.0f);           // 设置绘制颜色为黑
    glPointSize(4.0);                    //设置点的大小为4*4像素
    glMatrixMode(GL_PROJECTION);// 设置合适的投影矩阵-以后解释 
    glLoadIdentity();
    gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
//<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>>
// 重绘函数
void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);     // 清屏幕 
    glPointSize(1);
    glBegin(GL_POINTS);
    glVertex2i(300, 300);
    //DrawTriangle(v5, v6, v7);
    glEnd();
    glFlush();                         // 将所有输出到显示屏上 
}
//<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>>
void main(int argc, char **argv)
{
    glutInit(&argc, argv);          // 初始化工具包
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显式模式
    glutInitWindowSize(SCREEN_WIDTH, SCREEN_HEIGHT);     // 设置窗口大小
    glutInitWindowPosition(100, 150); // 设置窗口位置
    glutCreateWindow(SCREEN_TITLE); // 打开屏幕窗口
    glutDisplayFunc(myDisplay);     // 注册绘制函数
    myInit();
    glutMainLoop();              // 进入主循环
}

运行代码
结束,可看到2个黑色窗口,其中一个窗口可看到绘制的点

本篇文章只是阐述环境的配置,如果想了解原理,可参考《计算机图形学opengl版》。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引