OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。
一般OpenGL包含 GL.H GLAUX.H GLU.H glut.h glut32.lib GLU32.LIB glut.dll glut32.dll
其中 GLUT
代表
OpenGL
应用工具包(
OpenGL Utility Toolkit
),是一个与窗口系统无关的工具包。它作为
AUX
库的功能更强的替代品,用于隐藏不同窗口系统
API
的复杂性。
GLUT
的子程序的前缀使用
”glut”
。
我们以VS2005为例来说明环境的配置,
(1)C:\Program Files\Microsoft Visual Studio\VC98\include。在这里建立一个GL文件夹把glut.h放到这个GL文件夹里。
(2)C:\Program Files\Microsoft Visual Studio\VC98\lib文件夹。把glut.lib和glut32.lib放到静态函数库所在文件夹,即lib文件夹。
(3)把glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(C:\Windows\System32)这个是动态链接库设置!
(3)把glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(C:\Windows\System32)这个是动态链接库设置!
编写一个例子。如果编译通过但运行时出现这个错误“无法定位程序输入点_gultInitWithExit 于动态链接库gult32.dll上 ”
则是因为gult32.dll版本问题,可能用的gult32.dll是VS2003下面可用,解决方法是 重新下载一个gult32.dll,只要版本对上了就可以了。
openGL编程指南上的例子,可以帮我们测试,是否配置环境成功:
#include <gl/glut.h>
#include <gl/glu.h>
#include <gl/glu.h>
//using namespace std;
void init()
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glLoadIdentity();
gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
glScalef(1.0,2.0,1.0);
glutWireCube(1.0);
glFlush();
}
void reshape(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0,1.0,-1.0,1.0,1.2,20.0);
glMatrixMode(GL_MODELVIEW);
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0,1.0,-1.0,1.0,1.2,20.0);
glMatrixMode(GL_MODELVIEW);
}
void main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
//return 0;
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
//return 0;
}
转载于:https://blog.51cto.com/pingpeace/194590