刚开始接触OpenGL,有点小激动,终于绘制出一个图形了,哇
通过绘制,大概明白OpenGL的框架。主要掌握的是这个。
通过代码加注释理解程序,简单粗暴。
<span style="font-size:18px;"><span style="font-size:18px;">#include<windows.h>
#include<gl/glut.h>
#include<gl/gl.h>
#include<gl/glu.h>
//头文件/表示在gl目录下的.h头文件
//函数用于在窗口中绘制需要的图形
//只是一个场景scene 并不会真正绘制到图形中去。
void RenderScene(void)
{
//用当前清除颜色缓冲区,即设定窗口的背景颜色
// 清除viewport的缓冲区
//大概就是清除下面所要画的区域的缓冲区
glClear(GL_COLOR_BUFFER_BIT);
//设置当前绘图使用的GGB颜色 red
glColor3f(1.0f,0.0f,0.0f);
//使用当前的颜色绘制一个填充的矩形
//绘制矩形,窗口坐标系是左下角(0,0),x向右,y向上
//qt使用的是右上角(0,0)
glRectf(100.0f,150.0f,150.0f,100.0f);
//强制刷新OpenGL命令队列
glFlush();
/*
简单地说glFlush()就是强制刷新,OpenGL是使用一条渲染管线[3] 线性处理命令的,一般情况下,
我们提交给OpenGL的指令并不是马上送到驱动程序[4] 里执行的,而是放到一个缓冲区里面,
等这个缓冲区满了再一次过发到驱动程序里执行;很多时候只有几条指令是填充不满那个缓冲区的,
就是说这些指令根本没有被发送到驱动里,所以我们要调用glFlush来强制把这些指令送到驱动里进行处理。
*/
}
//函数ChangeSize是窗口大小改变时调用的登记函数
//GLsizeiGLsizei 是32位整数
void ChangeSize(GLsizei w, GLsizei h)
{
//窗口的高度y不为0
//去掉调试之后,还没发现有什么区别
if (h == 0)
h = 1;
//定义视区并指明尺寸
//一般是充满整个屏幕
glViewport(0,0,w,h);
/*
glMatrixMode设置当前矩阵模式:
GL_MODELVIEW, 对模型视景矩阵堆栈应用随后的矩阵操作.