虽然最近的项目是使用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的函数:
glutInitWindowSize和glutInitWindowPosition分别设定了窗口的大小和坐标。
glutCreateWindow进行了创建指定标题的窗口。
glutDisplayFunc注册了一个绘制的函数,用于进行OpenGL的绘制。
glutMainLoop执行了主循环,用于不停的绘制和事件处理。
在Render函数中,我们首先以RGBA(1.0,0.0,0.0,1.0)的颜色清除了颜色缓冲区。然后通过glColor3f设定颜色,通过glBegin和glEnd开始绘制多边形操作。最后调用glFlush进行强制刷新,来显示绘制的图形内容。
显示效果如下:
文章评论