OpenGL 简介
OpenGL 基础框架
要学习OpenGL,还是从最基础的开始,先配置环境,然后创建一个空白的窗口,接着画顶点、线、三角形。
1 配置环境
环境: Ubuntu12.04 + Qt5.0.2
1.1 安装所需库文件:
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libglut-dev
1.2 Qt配置项目工程:
在Qt的xx.pro工程文件中,加入所需的OpenGL库文件:
LIBS += -lGL -lglut -lGLU -lGLEW
否则会报错:
undefined reference to 'glClear'
之类的链接错误,所以一定记得配置库文件。
1.3 编译
编译提供了几个常用的:
qmake:
qmake
用来生成Makefile,然后执行
make
来生成可执行文件,默认的名称为项目名称。
./xxx
为了方便,我们写一个脚本来自动执行这些操作,创建run.sh,加入以下代码:
qmake
make
./xxx
然后修改脚本的权限:
chmod 755 run.sh
以后就可以直接执行
./run.sh
来执行编译、运行等一系列命令。
g++编译
2 OpenGL的“第一次”
代码详见github:
首先加入头文件:
#include <GL/glut.h>
然后先写main函数:
int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初始化glut
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//显示模式
glutInitWindowPosition(50, 100);//视窗左上角位于屏幕的初始位置
glutInitWindowSize(400, 300);//视窗的大小,单位像素
glutCreateWindow("My first OpenGL Program");//视窗标题栏名称
glutMainLoop();//注意:必须加入glutMainLoop才能显示窗口!
return 0;
}
[扩展阅读:显示模式]()
现在就有了视窗。
现在加入两个函数,定义和实现都写在main函数前面。第一个函数是init初始化函数,
void init(void){
glClearColor(1.0, 1.0, 1.0, 0.0);//清屏颜色
glMatrixMode(GL_PROJECTION);//设置模式
glLoadIdentity();
gluOrtho2D(0.0, 200.0, 0.0, 150);
}
只有设置离初始化函数init的glClearColor
函数后,出现的窗口才会清空颜色,变为纯白。
然后加入第二个函数:linesegment:
void linesegment (void) {
glClear (GL_COLOR_BUFFER_BIT);//清颜色缓存
glColor3f (1.0, 0.0, 0.0); //绘图颜色设定
glBegin (GL_LINES); //图元:线段
glVertex2i (180, 15);
glVertex2i (10, 145);
glEnd();
glFlush ();
}
这个函数的作用为:绘制一条直线。glClear清除窗口显示的颜色的缓存,并用glColor3f来设置颜色。从glBegin到glEnd就是绘制的部分,GL_LINES表示绘制的是线段,设置两个顶点glVertex2i,OpenGL会自动绘制由这两点构成的线段。glFlush命令强制刷新缓冲区,保证我们的设置由缓冲区设置到窗口上。
现在就有了这个绘制: