OpenGL之路(一)OpenGL、gl、glu、glut的区别 + glut环境的搭建

OpenGL之路(一)OpenGL、gl、glu、glut的区别 + glut环境的搭建

OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库,gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可以用MFC和Win32窗口等代替,但是glut是跨平台的,这就保证了我们编出的程序是跨平台的,如果用MFC或者Win32只能在windows操作系统上使用。选择OpenGL的一个很大原因就是因为它的跨平台性,所以我们可以尽量的使用glut库。


glut的搭建:

1.glut的下载:

(1).到 http://www.ibiblio.org/pub/packages/development/graphics/glut/  下载 glut3.7

(2).到 http://www.opengl.org/resources/libraries/glut/glut_downloads.php  下载glut35.zip进行编译(注意编译前执行glutmake.bat),或直接下载glutdlls.zip

2.glut的配置

(1).将glut.h 放到Microsoft Visual Studio\VC\include\gl 目录下。(具体位置视自己编译器和安装位置而定, 可能的位置有Microsoft SDKs\Windows\v7.1A\Include\gl 或 Windows Kits\8.1\Include\um\gl ,路径中可能会有数字的改变,如果一直示例编译不过可以在这三个位置都放上)

(2).将glut.lib 和 glut32.lib 放到VC\bin 目录下(具体位置视自己编译器和安装位置而定)

(3).  32位系统: 将glut.dll 和 glut32.dll 放到c:\Windows\System32\

64位系统: 将glut.dll 和 glut32.dll 放到c:\Windows\SysWOW64\

3.编译器设置

在项目属性的连接项中添加 glut32.lib 和 glut.lib


4.第一个程序实例

工程选项中应确保是windows 而不是console

  1. #include <GL/glut.h>  
  2.   
  3. #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")//去掉控制台  
  4.   
  5. void renderScene(void)  //渲染函数  
  6. {  
  7.     glClear(GL_COLOR_BUFFER_BIT);  
  8.     glBegin(GL_TRIANGLES);  
  9.     glVertex3f(0.0, 0.0, 0.0);  
  10.     glVertex3f(0.5, 0.0, 0.0);  
  11.     glVertex3f(0.0, 0.5, 0.0);  
  12.     glEnd();  
  13.     glFlush();  
  14. }  
  15. int main(int argc, char **argv)  
  16. {  
  17.     glutInit(&argc, argv);  
  18.     glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);  
  19.     glutInitWindowPosition(100, 100);  
  20.     glutInitWindowSize(300, 300);  
  21.     glutCreateWindow("GLUT");  
  22.     glutDisplayFunc(renderScene);  //设置渲染函数  
  23.     glutMainLoop();  
  24. }  
#include <GL/glut.h>

#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")//去掉控制台

void renderScene(void)  //渲染函数
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_TRIANGLES);
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.5, 0.0, 0.0);
	glVertex3f(0.0, 0.5, 0.0);
	glEnd();
	glFlush();
}
int main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(300, 300);
	glutCreateWindow("GLUT");
	glutDisplayFunc(renderScene);  //设置渲染函数
	glutMainLoop();
}

如果仍旧无法解决问题,可以试试以下代码

  1. #include <gl/glut.h>  
  2. #include <gl/GLU.h>  
  3. #include <gl/GL.h>  
  4. #pragma comment(lib, "opengl32.lib")  
  5. #pragma comment(lib, "glut32.lib")  //如果未找到这几个文件可以使用绝对路径,注意路径中'\'要改成 '\\'  
  6. #pragma comment(lib, "glu32.lib")  
  7. #pragma comment(lib, "glut.lib")  
  8. void renderScene(void)  
  9. {  
  10.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
  11.     glLoadIdentity();  
  12.     glBegin(GL_TRIANGLES);  
  13.     glVertex3f(6.0f, 2.0f, 0.0f);  
  14.     glVertex3f(-1.0f, -1.0f, 0.0f);  
  15.     glVertex3f(1.0f, -1.0f, 0.0f);  
  16.     glEnd();  
  17.     glTranslatef(3.0f, 0.0f, -1.0f);  
  18.   
  19.     glutSwapBuffers();  
  20. }  
  21. int main(int argc, char * argv[])  
  22. {  
  23.     glutInit(&argc, (char**)argv);  
  24.     glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);  
  25.     glutInitWindowPosition(100, 100);  
  26.     glutInitWindowSize(320, 320);  
  27.     glutCreateWindow("Hello OpenGL");  
  28.     glutDisplayFunc(renderScene);  
  29.     glutIdleFunc(renderScene);  
  30.   
  31.     glEnable(GL_DEPTH_TEST);  
  32.     glutMainLoop();  
  33.     return 0;  
  34. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值