使用OpenGL中的GLUT

 

为了使作图部分更简单,从而更好地理解曲线、曲面的理论,所以使用了OpenGL的GLUT工具来实现。

从OpenGL网站http://www.opengl.org下载GLUT,下载后有以下几个文件且需要手动安装:

glut.h ——— glut头文件;

glut32.lib—— glut静态库;

glut32.dll—— glut动态库;

安装分为以下几步:

1. 将glut.h放到编译器默认的包含文件夹中,如 ...\include\GL, gl.h和glu.h应该就在那个文件夹内;

2. 将glut32.lib放到编译器默认的静态库中,如 ...\Lib\;

3. 最后将glut32.dll放在操作系统的System32文件夹中: 如C:\Windows\System32;

安装完GLUT库后,若要在Visual C++中使用,需要做以下设置:

在菜单Project->Settings中,或按快捷键Alt+F7出现Project Settings对话框,在Link选项中,在如图A1所示位置添加上要使用的OpenGL库:

opengl32.lib glu32.lib glut32.lib

图A1. 添加GLUT库

一个简单的GLUT示例程序的源程序如下所示:

 

 1 // An Example OpenGL Program 
 2 
 3 #include <gl\glut.h> 
 4 
 5 void    Initialize(void); 
 6 void    DrawScene(void); 
 7 
 8 void main(int argc, char* argv[]) { 
 9     glutInit(&argc, argv);                            // Initialize GLUT 
10     glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);        // Set display mode 
11     glutInitWindowPosition(50,100);                    // Set top-left display window position 
12     glutInitWindowSize(400, 300);                    // set display window width and height 
13     glutCreateWindow("An Example OpenGL Program");    // Create display window 
14 
15     Initialize();                                    // Execute initialization procedure 
16     glutDisplayFunc(DrawScene);                        // Send graphics to display window 
17 
18     glutMainLoop();                                    // Display everything and wait 
19 } 
20 
21 /* 
22 */ 
23 void    Initialize(void) { 
24     //glClearColor(1.0, 1.0, 1.0, 0.0);                // Set Display-window color to white 
25     glMatrixMode(GL_PROJECTION);                    // Set projection parameters 
26     glLoadIdentity(); 
27     gluOrtho2D(0.0, 200, 0.0, 150);                    // 
28 } // Initialize 
29 
30 /* 
31 */ 
32 void    DrawScene(void) { 
33     glClear(GL_COLOR_BUFFER_BIT);                    // Clear display window 
34 
35     glColor3f(1.0, 0.0, 0.0f);                        // set line segment geometry color to red 
36     glBegin(GL_LINES); 
37         glVertex2i(0, 0); 
38         glVertex2i(190, 140); 
39     glEnd(); 
40 
41     glFlush();                                        // Process all OpenGL routines as quickly possible 
42 } // DrawScene
43 

 

时间: 2024-09-20 11:45:08

使用OpenGL中的GLUT的相关文章

多线程-如何在OpenGL中渲染多个视频

问题描述 如何在OpenGL中渲染多个视频 程序使用win32开发,视频使用ffmpeg进行帧的截取,然后贴到OpenGL纹理中,渲染一个视频的话不用使用到多线程,处理能力足够快,但是现在需要渲染多个视频,不可能在主线程完成,两三个视频基本上窗口就卡死了.后来改用多线程,建立了两个OpenGL的上下文环境,一个线程负责更新纹理,主线程负责渲染,但是更新纹理的线程依然是照着视频一个个照顺序截,截完再通知主线程画出来,本来以为这样的结构应该没问题,结果渲染速度依然达不到要求,现在想问问有什么办法做到

c++-向opengl中加载一个3ds文件的问题........

问题描述 向opengl中加载一个3ds文件的问题........ 我在网上找了好多有关的资料和代码,几乎都是win32的程序.我没学过windows编程,理解起来好费劲啊!我学习opengl只有几天的时间,估计连个新手也算不上,不知道那位能给提供一个能运行的控制台的代码.... 对于3ds里面的文件结构我基本上了解了一些,我主要想看看加载的代码该如何写呢? 谢谢..

opengl中如何进行离屏渲染?如何创建比屏幕大的帧缓冲区?

问题描述 opengl中如何进行离屏渲染?如何创建比屏幕大的帧缓冲区? 我现在需要要创建一个9倍于屏幕大小的缓冲区,一次性渲染一个九倍当前屏幕大小的场景然后使用glReadPixel读取这个场景截图的数据(如果我创建的帧缓冲区没有屏幕大,我就没法从缓冲区中使用glReadPixel函数读取到面积足够大的图片,即使我读取的宽度和高度设置为屏幕的3倍,但是读取出来的超出屏幕的范围都是glClear清除出来的颜色,实际的场景没法被渲染到超高屏幕的范围) 首先,这个问题是我在负责一个老项目时候遇到的,这

en 悬浮提示框 绘图-OpenGL中可以实现类似的悬浮框吗?

问题描述 OpenGL中可以实现类似的悬浮框吗? 4.现在的Windows下的OpenGL版本对OpenGL和GDI在同一个DC上作图有一定的限制.当使用双缓存用OpenGL产生动画时,不能使用GDI函数向该DC作图. 我用的双缓存 貌似不可以用DC再绘图了吧?看这图片上的 还有汉字而且不会随窗口的放大变化 这到底是怎么实现的?类似CToolTipCtrl 这样的在空间上用的悬浮提示框可以实现这样的效果吗? 解决方案 输入是靠控件实现的,其它可以自己画 解决方案二: 用什么画?绝对不是在Open

关于opengl中贴图的问题

问题描述 关于opengl中贴图的问题 屏幕上有个矩形,选中进行贴图.图形是水平的,若矩形是水平的贴图很简单,但若矩形是斜的怎么办?尝试逐像素对应贴图但计算公式带来误差,会使某些像素点没有贴上,有什么好的方法吗 解决方案 图形的大小也不一定与矩形相同,需要进行拉伸 解决方案二: Qt下OpenGL贴图问题opengl 关于纹理贴图 解决方案三: 你只需要找到矩形四个定点对应的纹理四个定点 比如矩形四个顶点坐标为:(20,50,0),(20,20,0),(50,20,0),(50,50,0) 那么

编程-OpenGL中,glColor()指定颜色后不起作用

问题描述 OpenGL中,glColor()指定颜色后不起作用 在使用glColor3f()函数的时候发现了一个问题,画出的图元颜色和glColor3f函数的位置有关系,有时候glColor函数不起作用. 下面有两段代码,作用是画一个红色的太阳,再画一个灰色的地球轨道. 请问为什么第二段代码中画出的太阳是灰色的?理论上说和第一段代码效果是一样的,仅仅是调换了下画图的顺序. 实在不理解.希望各位不吝赐教!谢谢! 第一段代码,这里先画一个红色球体,再画一个绕球体的灰色的圆. glClear(GL_C

c++-opengl中glLookAt向上方向向量的问题

问题描述 opengl中glLookAt向上方向向量的问题 glLookAt的第三个参数组是表示向上方向的向量 这个向量一定要与 相机位置及相机对准位置的连线垂直吗,如果不垂直会有什么后果 如图, 红线是 相机位置及相机对准位置连线 蓝框是照相机 紫线是垂直的向上方向向量 如果把紫线改为不与红线垂直的绿线会有什么影响吗

关于 OpenGL 中平移矩阵变换与实体对象坐标平移的关系分析结论

关于 OpenGL 中平移矩阵变换与实体对象坐标平移的关系分析结论 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 除题目中所提及的平移矩阵变换和对象坐标平移,还有旋转的中心点设定(弄不好,旋转

求高手指点opengl中glutMainLoop();错误

问题描述 voidmyDisplay(void){glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.0f,1.0f,0.0f);glRectf(-0.5f,-0.5f,0.5f,0.5f);//画一个绿色的正方形glFlush();}intmain(intargc,char*argv[]){glutInit(&argc,argv);glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);glutInitWindowPosition(10