opengl环境搭建 (win7-32bit + vs2012 + freeglut + glew)
有人freeglut+glew,也有人glfw+glew,因为自己对glfw不是太了解,就用freeglut了
soft:
win7-32bit
vs2012
freeglut-2.8.1.tar
glew-1.11.0-win32
下面懒得编译的话就直接从相应文件夹内找对应文件拷贝到相应文件夹就可以了、
1.安装freeglut
解压freeglut-2.8.1.tar,进入freeglut-2.8.1\VisualStudio\2012,
双击
改成Release,
右键"解决方案"->“重新生成解决方案”
编译完成
然后改成Release_Static
重新编译
完成
freeglut-2.8.1\lib\x86路径下将会有几个新生成的文件
头文件(.h文件):
将\freeglut-2.8.1\include\GL下,freeglut.h,freglut_ext.h,freeglut_std.h,glut.h四个头文件复制到路径下Windows Kits\8.0\Include\um\gl路径下。
静态库文件(lib文件):
将freeglut-2.8.1\lib\x86下生成的freeglut.lib、freeglut_static.lib复制到Windows Kits\8.0\Lib\win8\um\x86下
动态库文件(dll文件):
将freeglut-2.8.1\lib\x86下生成的freeglut.dll拷贝到C:\Windows\System32
到此freeglut的配置就完成了。
==========================
测试freeglut
打开vs2012,文件-》新建-》项目-》控制台程序
程序清单:
<pre name="code" class="cpp">#include "stdafx.h"
#include <gl/glut.h>
void myDisplay(void )
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int _tmain(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow( "第一个OpenGL程序" );
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
运行如下;
==========================
2.配置glew
glew-1.11.0\include\GL下的头文件复制到Windows Kits\8.0\Include\um\gl下
glew-1.11.0\lib\Release\Win32下lib复制到Windows Kits\8.0\Lib\win8\um\x86下
glew-1.11.0\lib\Release MX\Win32下lib复制到Windows Kits\8.0\Lib\win8\um\x86下
glew-1.11.0\bin\Release\Win32下文件复制到C:\Windows\System32下
glew-1.11.0\bin\Release MX\Win32下文件复制到C:\Windows\System32下
需要注意的:
在程序中我们只需要在包含gl,glu 或 glut.h 之前包含 glew.h就可以了(注意:一定要先包含 glew.h)
在代码中加上这么一句: #pragma comment (lib, "glew32.lib")
- 示例:
- #include <GL/glew.h>
- #include <GL/glut.h>
- #progrma comment(lib, "glew32.lib")
- 在创建OpenGL渲染context之后,调用 glewInit(); 初始化glew就可以了。
可能用到的库文件:opengl32.lib glu32.lib glut32.lib glew32.lib
glut和glew的初始化,glew必须在正确设定了Render Context后才能初始化,即在调用了glutCreateWindow()后才能初始化glew
测试程序:
<pre name="code" class="cpp">#include "stdafx.h"
#include <GL/glew.h>
#include <GL/freeglut.h>
#pragma comment (lib , "glew32.lib" )
int main(int argc, char *argv[])
{
glutInitWindowSize(500, 250);
glutInitWindowPosition ( 140, 140 );
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE );
glutInit(&argc, argv);
glutCreateWindow( "Hello world!" );
if(glewInit() == GLEW_OK)
printf( "glewInit OK!\n\n");
printf( "OpenGL version: %s\n", glGetString(GL_VERSION));
printf( "GLSL version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
glutMainLoop();
return 0;
}
运行结果:
至此配置glew完成。
glew32mx glew32mxs glew32 glew32s区别
s 是static的意思吧
glew32.lib需要glew32.dll
glew32s.lib就不需要了
glew32.lib需要glew32.dll
glew32s.lib就不需要了
mx = multi context, 也就是多窗口多线程显示.glew只能多个viewport,每帧只能同步地画多个窗口
=============================
Good Luck!
kylin