学习OpenGL超级宝典(OpenGL superbible)的第一个程序
2013-12-11 20:55
399 查看
1.cpp
在Linux下学习的好处是不用受MS的束缚,在学习之初并没有复杂的调试错误,只需在终端中输入几行命令,就可看到效果,很方便。在终端中输入如下命令,-glut是用到glut库,glut在之前已经安装。
$ g++ 1.cpp -o 1 -lglut
结果得到错误如下:
/usr/bin/ld: /tmp/ccZJJ3dA.o: undefined reference to symbol 'glClear'
/usr/bin/ld: note: 'glClear' is defined in DSO /usr/lib/libGL.so.1 so try adding it to the linker command line
/usr/lib/libGL.so.1: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
没有找到libGL.so.1, 所以定位libGL:
$ locate libGL
得到:
/usr/lib/i386-linux-gnu/libGL.so
/usr/lib/i386-linux-gnu/libGLEW.so.1.6
/usr/lib/i386-linux-gnu/libGLEW.so.1.6.0
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.6
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.6.0
/usr/lib/i386-linux-gnu/libGLU.a
/usr/lib/i386-linux-gnu/libGLU.so
/usr/lib/i386-linux-gnu/libGLU.so.1
/usr/lib/i386-linux-gnu/libGLU.so.1.3.08004
/usr/lib/i386-linux-gnu/mesa/libGL.so
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
再尝试加上库lGL:
$ g++ 1.cpp -o 1 -lglut -lGL
OK~ 编译通过,得到结果如下:
下面,在这个窗口内画一个长方形:
$ g++ 1.cpp -o 1 -lglut -lGL
#include <GL/glut.h> //glut.h中包含头文件gl.h和glu.h void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glFlush(); } void SetupRC(void) { glClearColor(0.0f,1.0f,1.0f,1.0f); } int main(int argc, char* argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA); glutCreateWindow("Simple"); glutDisplayFunc(RenderScene); SetupRC(); glutMainLoop(); return 0; }
在Linux下学习的好处是不用受MS的束缚,在学习之初并没有复杂的调试错误,只需在终端中输入几行命令,就可看到效果,很方便。在终端中输入如下命令,-glut是用到glut库,glut在之前已经安装。
$ g++ 1.cpp -o 1 -lglut
结果得到错误如下:
/usr/bin/ld: /tmp/ccZJJ3dA.o: undefined reference to symbol 'glClear'
/usr/bin/ld: note: 'glClear' is defined in DSO /usr/lib/libGL.so.1 so try adding it to the linker command line
/usr/lib/libGL.so.1: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
没有找到libGL.so.1, 所以定位libGL:
$ locate libGL
得到:
/usr/lib/i386-linux-gnu/libGL.so
/usr/lib/i386-linux-gnu/libGLEW.so.1.6
/usr/lib/i386-linux-gnu/libGLEW.so.1.6.0
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.6
/usr/lib/i386-linux-gnu/libGLEWmx.so.1.6.0
/usr/lib/i386-linux-gnu/libGLU.a
/usr/lib/i386-linux-gnu/libGLU.so
/usr/lib/i386-linux-gnu/libGLU.so.1
/usr/lib/i386-linux-gnu/libGLU.so.1.3.08004
/usr/lib/i386-linux-gnu/mesa/libGL.so
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
再尝试加上库lGL:
$ g++ 1.cpp -o 1 -lglut -lGL
OK~ 编译通过,得到结果如下:
下面,在这个窗口内画一个长方形:
#include <GL/glut.h> //glut.h中包含头文件gl.h和glu.h void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 0.0f, 0.0f); glRectf(-25.0f,25.0f,25.0f,-25.0f); glFlush(); } void SetupRC(void) { glClearColor(0.0f,0.0f,1.0f,1.0f); } void ChangeSize(GLsizei w, GLsizei h) { GLfloat aspectRatio; if(h == 0) h = 1; glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); aspectRatio = (GLfloat)w / (GLfloat)h; if(w <= h) glOrtho(-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0); else glOrtho(-100 / aspectRatio, 100.0 / aspectRatio, -100.0, 100.0, 1.0, -1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char* argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA); glutCreateWindow("Simple"); glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); //Control viewport to draw rectangle SetupRC(); glutMainLoop(); return 0; }重新用g++编译:
$ g++ 1.cpp -o 1 -lglut -lGL
相关文章推荐
- opengl superbible第一个程序
- OpenGL入门学习——第一课 编写第一个OpenGL程序
- OpenGL学习——第二课:第一个OpenGL程序
- OpenGL学习(二)第一个程序
- openGL 学习1--ubuntu中安装openGL与第一个绘图程序
- OpenGL学习笔记一。第一个程序
- OpenGL super bible(5th) 学习笔记 -- 缓冲区
- OpenGL super bible(5th) 学习笔记 -- 像素缓冲区对象(PBO)
- OpenGL学习-------visual studio 2010配置和第一个OpenGL程序讲解
- OpenGL入门学习之一——编写第一个OpenGL程序
- [OpenGL学习] mac上运行第一个openGL程序
- openGL 超级宝典第五版学习 第一个程序
- OpenGL SUPERBIBLE Fifth Edition 学习笔记1
- OpenGL SuperBible --- 第三节:使用辅助库来学习OpenGL
- PyQt4学习笔记1:PyQt4第一个程序
- QT creator 第一个程序 qt学习笔记第三章
- JavaSE学习(1)第一个程序
- Ruby学习-第一个Ruby程序
- 《疯狂Java讲义(第三版)》学习笔记之 —— 1.3 Java运行机制 && 1.5 第一个Java程序
- Objective-C学习笔记(三)——用Objective-C编写第一个程序:Hello,World!