从零开始学习OpenGL(1) 基础示例

虽然最近的项目是使用DirectX开发投影仪融合相关的。但是作为一个Java程序员,从最开始我稍微感兴趣一点的还是OpenGL (最主要的原因是之前做过两年安卓开发,有用到OpenGL ES)。当然,从另外一个方面来讲,可能也是因为做Unity3D开发而对DX或者OpenGL毫无了解的话,总觉得没有什么大的挑战性。所以准备边学习边写一些教程。

在初学OpenGL的时候,其实Windows自带的OpenGL已经够用了。我们只需要去下载一个GLUT库。

GLUT是OpenGL的一个扩展工具库,可以给我们开发OpenGL程序提供很大的便利。

在这里,我使用VS2012。大家将下载好的GLUT库里的,头文件glut.h放在Microsoft Visual Studio 11.0\VC\include目录下,将glut.lib和glut32.lib文件放在Microsoft Visual Studio 11.0\VC\lib目录下,然后将glut.dll和glut32.dll放在Windows\System32或者Windows\SysWOW64下面,这个取决于我们系统是32位还是64位的。

下面来看一个基础的示例:

#include <gl\glut.h>
void Render(){
      glClearColor(1.0f,0.0f,0.0f,1.0f);
      glClear(GL_COLOR_BUFFER_BIT);
      glColor3f(1.0,0.0,0.0);
      glBegin(GL_POLYGON);
       glVertex2f(-0.5,-0.5);
       glVertex2f(-0.5,0.5);
       glVertex2f(0.5,0.5);
       glVertex2f(0.5,-0.5);
      glEnd();
      glFlush();
}
int main(int arg, char** argv){
      glutInitWindowSize(600,600);
      glutInitWindowPosition(420,150);
      glutCreateWindow("My OpenGL Window");
      glutDisplayFunc(Render);
      glutMainLoop();
}

这是一个基础的示例,我们首先加入了glut的头文件。

由于在glut的头文件中已经包含了gl.h和glu.h头文件,所以我们不需要做额外的工作。

这里使用了GLUT的函数:

  glutInitWindowSizeglutInitWindowPosition分别设定了窗口的大小和坐标。

  glutCreateWindow进行了创建指定标题的窗口。

  glutDisplayFunc注册了一个绘制的函数,用于进行OpenGL的绘制。

  glutMainLoop执行了主循环,用于不停的绘制和事件处理。

在Render函数中,我们首先以RGBA(1.0,0.0,0.0,1.0)的颜色清除了颜色缓冲区。然后通过glColor3f设定颜色,通过glBegin和glEnd开始绘制多边形操作。最后调用glFlush进行强制刷新,来显示绘制的图形内容。

显示效果如下:

发表评论

电子邮件地址不会被公开。