关于的glut 的配置

OpenGL 是一套 用于三维作图的API。与Direct3D 相比, OpenGL比较容易学,网上的教程与代码也比较多。如果高手们也能贡献一些教程出来就更好!首先确定我们的程序框架。我们打算用 glut,因为它是跟系统无关的,它可以代替win32 api 中那些建立窗口,消息循环的繁琐的代码,能够让我们把注意力集中到真正跟3D图形相关的内容上去。

glut 是一个win32 dynamic lib,先下载 http://reality.sgi.com/opengl/glut3/glutdlls37beta.zip把glut32.dll放到 windows system目录下,另外建个目录,比如说 c:\glut,再在c:\glut下面建c:\glut\gl,把头文件glut.h放到c:\glut\gl下面,把 glut32.lib放在c:\glut下面。我们要用 VC5或者 VC6。 运行VC, 选择菜单 Tools/Options/Directories,把c:\glut加入include和lib路径。

好了,准备就绪,可以用 glut编程了。

最简单的程序是弹出一个窗口。

#include <gl/glut.h>
void display()
{
}
int main(int argc, char** argv)
{
        glutInit(&argc, argv);
        glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA);           //设置显示模式:单缓冲区, RGBA颜色模式
        glutInitWindowSize (200, 200);           //设置窗口宽度、高度
        glutCreateWindow (argv[0]);           //弹出窗口
        glutDisplayFunc (display);           //设置窗口刷新的回调函数其中display 是函数指针,是屏幕刷新是会调用的函数 所以我的大部分工作将在这个函数里完成
        glutMainLoop();           //开始主循环
        return 0;
}

在这个程序中 我们的display 函数为空 也就是什么都不干那么windows 将不会去更新窗口的区域 所以我们这里看到的是桌面背景,如果我们要在窗口中填充自己喜欢的颜色 我们可以在display 中添加如下语句:

void display()
{
    glClearColor(1,1,1,1);    // 设置刷新背景色
    glClear(GL_COLOR_BUFFER_BIT);    // 刷新背景
    glFlush();    // 更新窗口
}

这里我们看到了三个以gl 开头的函数,他们都属于opengl 的基本库 都可以在 gl.h 里找到

所以当程序里有 gl 开头的函数是切记不要忘了加上 #include <gl/gl.h>        这里可能有点问题,明明是一个功能却要三个函数,其实这里牵涉到 opengl 的一个重要机理 含有状态变量的自动机

可以理解为在系统中始终有一个变量存放着窗口的背景颜色 glclearcolor 仅仅相当于给这个变量复值,而 glclear 和他的参数看上去有点棘手 我们可以暂时把它看成是设置填充背景的方式,而在这里真正使这些功能起作用的是 glflush 他通知系统重画窗口,在重画中系统将把背景色变成我们刚刚提及的那个变量的颜色 于是乎 就发生了你电脑屏幕上的一切
### 如何正确配置GLUT库 在配置 OpenGL 开发环境时,GLUT 是一个常用的工具包,用于简化窗口创建、事件处理和其他基础功能。以下是关于如何正确配置 GLUT 库以及常见的配置问题解决方案。 #### 安装和配置 GLUt 为了成功使用 GLUT,在开发环境中需要完成以下几个方面的工作: 1. **下载并安装 GLUT** 确保已经从官方或其他可信资源获取到适合操作系统的版本的 GLUT 库文件[^2]。通常情况下,这些文件可能包括 `.h` 头文件和 `.lib/.a` 或者 `.dll` 动态链接库文件。 2. **设置头文件路径** 将 GLUT 提供的 `glut.h` 文件所在的目录添加到项目的包含路径中。这一步可以通过 IDE 设置或者命令行参数实现。例如,在 Visual Studio 中可以进入项目属性 -> C/C++ -> 常规 -> 添加附加包含目录[^1]。 3. **指定库文件位置** 同样地,对于静态或动态链接所需的库文件(`.lib`, `.a`),也需要将其所在的位置告知编译器/链接器。继续以上述为例,则是在链接器选项下找到输入项,并加入 glut 对应的库名。 4. **复制 DLL 到可执行文件夹** 如果采用的是动态链接方式,那么还需要把对应的 `.dll` 文件拷贝至最终生成的应用程序同一级目录下以便于运行时刻加载。 #### 解决常见配置问题 尽管按照上述方法进行基本配置往往能够满足大部分需求,但在实际过程中仍可能出现各种各样的错误提示。下面列举了一些典型的例子及其应对措施: - **缺少必要的驱动支持** 当尝试初始化 OpenGL 上下文失败时,首先要确认计算机上是否存在最新版显卡驱动并且启用了硬件加速特性[^3]。如果没有合适的驱动更新可用的话,考虑降级 API 版本来兼容旧设备。 - **找不到入口点 (Entry Point Not Found)** 这类报错通常是由于使用的函数签名不匹配造成的。检查当前平台所支持的具体规格文档,调整源码中的调用形式使之符合标准定义。 - **无法定位外部符号 (_unresolved external symbol_)** 表明链接阶段存在问题,可能是忘记引入关联的目标模块或者是拼写有误等原因引起。仔细核对声明部分与实现部分的一致性;另外也要记得按需开启多线程安全模式下的特定标志位开关。 ```cpp // 示例代码展示简单的 GLUT 初始化过程 #include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex2f(-0.5, -0.5); glVertex2f(0.5, -0.5); glVertex2f(0.0, 0.5); glEnd(); glFlush(); } int main(int argc, char* argv[]) { glutInit(&argc, argv); // Initialize GLUT system. glutCreateWindow("Simple Triangle"); // Create a window with title 'Simple Triangle'. glutDisplayFunc(display); // Register callback function to render scene. glutMainLoop(); // Enter the event processing loop. } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值