OpenGl编程指南第7版(红宝书)环境配制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenGl编程指南第7版(红宝书)环境配制
环境
OS:win7 旗舰版SP1 64位
编译器: VS 2013 express 的cl
软件
配制
%VS_HOME%代表VS的安装⽬录. %GLUT_HOME%代表glut所在的⽂件夹. %GLEW_HOME%代表glew所在的⽂件夹.
把%GLUT_HOME%\include*.h复制到%VS_HOME%\VC\include\GL. GL⽂件夹不存在就建⼀个.
把%GLUT_HOME%*.lib复制到%VS_HOME%\VC\lib
把%GLUT_HOME%*.dll复制到C:\Windows\SysWOW64
把%GLEW_HOME%\include\GL*.h复制到%VS_HOME%\VC\include\GL
把%GLEW_HOME%\lib\Release\Win32*.lib复制到%VS_HOME%\VC\lib
把%GLEW_HOME%\bin\Release\Win32*.dll复制到C:\Windows\SysWOW64
注意虽然系统是64位的但是GLEW要复制32位的.
运⾏例⼦
cl hello.c
如果按照上⾯的配制应该没有错误,会⽣成hello.exe⽂件.如果有错误请留⾔.
编译完成后运⾏可以看到效果.
hello.exe
红宝书中有的例⼦如mvarray.c需要⽤到函数glMultiDrawElements,glMultiDrawElementsEXT要⽤到Opengl 1.3,1.4的特性,Windows本⾝只⽀持Opengl 1.0. 所以要使⽤glew. 要对mvarray.c修改成如下内容.
#include <GL/glew.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#ifdef GL_VERSION_1_3
void setupPointer(void)
{
static GLint vertices[] = {25, 25,
75, 75,
100, 125,
150, 75,
200, 175,
250, 150,
300, 125,
100, 200,
150, 250,
200, 225,
250, 300,
300, 250};
glEnableClientState (GL_VERTEX_ARRAY);
glVertexPointer (2, GL_INT, 0, vertices);
}
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_SMOOTH);
setupPointer ();
}
void display(void)
{
static GLubyte oneIndices[] = {0, 1, 2, 3, 4, 5, 6};
static GLubyte twoIndices[] = {1, 7, 8, 9, 10, 11};
static GLsizei count[] = {7, 6};
static GLvoid * indices[2] = {oneIndices, twoIndices};
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glMultiDrawElementsEXT (GL_LINE_STRIP, count, GL_UNSIGNED_BYTE,
indices, 2);
glFlush ();
}
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h);
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit(0);
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (350, 350);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
glewInit();
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc (keyboard);
glutMainLoop();
return 0;
}
#else
int main(int argc, char** argv)
{
fprintf (stderr, "This program demonstrates a feature which is not in OpenGL Version 1.0.\n");
fprintf (stderr, "If your implementation of OpenGL Version 1.0 has the right extensions,\n");
fprintf (stderr, "you may be able to modify this program to make it run.\n");
return 0;
}
#endif
其实只做了2点修改.1是在最前⾯加了#include <GL/glew.h>的引⽤.2是在glutCreateWindow下⾯加了glewInit(),初始化glew.另外要记得把mvarray.c的编码格式改成UTF8 BOM.
编译mvarray.c要指定库,所以编译和链接要分成2步(否则会报glMultiDrawElementsEXT找不到的链接错误).
先编译,执⾏如下命令:
cl /c mvarray.c
/c的意思是只编译⽣成.obj,不链接,再执⾏命令
link glew32.lib mvarray.obj
链接glew32.lib mvarray.obj⽣成可执⾏⽂件mvarray.exe. 再执⾏命令
mvarray.exe
可以看到结果.。

相关文档
最新文档