dev-c++实际上已经包含了开发opengl程序基本的功能可以简单的选择:新建-multimedia-opengl,建立一个opengl程序。
这个程序包含了基本的opengl程序的结构,包括生成窗口,消息驱动机制,还有基本的opengl程序。直接点击运行可以看到一个不断旋转的彩色三角形。
在该工程的 Project Option -> Parameters -> Link 中发现已经连接了库 libglu32.a, libopengl32.a
-lopengl32
在工程根目录的 Makefile.win 中也能看到
LIBS = -L"E:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -mwindows -lopengl32 -g3
所以要想建立自己的 OpenGL 工程必须在建立win32工程的Link中加入下面参数
-lglu32
-lopengl32
现在根据《OpenGL 编程指南》中的例程简单实现:在黑色背景中渲染一个白色的矩形
#include<windows.h>
//#include<GL/gl.h>//glut.h中已经包含
//#include<GL/glu.h>
#include<GL/glut.h>
//绘制程序
void display()
{
glClear(GL_COLOR_BUFFER_BIT);//将屏幕设置为黑色
glColor3f(10.,1.0,1.0);//设置当前颜色状态为白色
glBegin(GL_POLYGON);//绘制多边形
glVertex3f(0.25, 0.25,0.0);
glVertex3f(0.75,0.25,0.0);
glVertex3f(0.75,0.75,0.0);
glVertex3f(0.25,0.75,0.0);
glEnd();
glFlush();//发送缓冲区
}
//初始化绘制
void init()
{
glClearColor(0.0,0.0,0.0,0.0);//清除颜色设置
glMatrixMode(GL_PROJECTION);//设置投影方式
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0,-1.0,1.0);设置投影空间
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);//初始化glut
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//设置显示模式为单缓冲,RGB模式
glutInitWindowSize(250,250);//设置窗口大小
glutInitWindowPosition(100,100);//设置窗口位置
glutCreateWindow("Hello");//设置窗口标题
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
首先得弄明白一点 glut 全名为 OpenGL utility tool, 系统不自带。
通过查看 Makefile.win 的前十几行可以发现上面的设置只是简单的在变量 LIBS 后面加入了 -mwindows -lglut32 -lglu32 -lopengl32
# Project: Project1
# Makefile created by Dev-C++ 5.2.0.3
CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
OBJ = main.o $(RES)
LINKOBJ = main.o $(RES)
LIBS = -L"E:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc -mwindows -lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32
INCS = -I"E:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include"
CXXINCS = -I"E:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include"
BIN = lson6.exe
CXXFLAGS = $(CXXINCS)
CFLAGS = $(INCS)
RM = rm -f
也就是说系统搜索 OpenGL 库的默认路径是x86_64-w64-mingw32/lib
目录, 然而该目录下根本没有 libglut32.a 文件
在 Parameters -> link 中添加:
-L"E:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32" -lglut32
会出现如下错误
skipping incompatible E:/Program Files/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32/libglut32.a when searching for -lglut32
有了上面的感性认识,接下来就可以进一步理解在 DEV C++ 中配置 OpenGL 的原理了
在使用 glut 时需要自己下载配置,于是必须明确如下几点
WINDOWS配置:
确保你的WINDOWS/SYSTEM32文件下有如下文件:
glu32.dll, glut32.dll, glut.dll, opengl32.dll
DEV C++库的配置:
确保DEV C++安装目录下的Lib文件中有如下文件:
libglu32.a, libglut32.a, libglut.a, libopengl.a
其次确保inlude\GL文件中又如下头文件:
gl.h, glu.h, glut.h,
DEV C++文件工程的属性设置:
右键单击工程,弹出菜单,点击工程属性,然后再弹出的表格中选择参数项,右边的连接器中输入:
-lglut32
-lglu32
-lopengl32
-lwinmm
-lgdi32