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

#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();
}

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

#include <gl/glut.h>
#include <gl/GLU.h>
#include <gl/GL.h>
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glut32.lib")  //如果未找到这几个文件可以使用绝对路径,注意路径中'\'要改成 '\\'
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut.lib")
void renderScene(void)
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glBegin(GL_TRIANGLES);glVertex3f(6.0f, 2.0f, 0.0f);glVertex3f(-1.0f, -1.0f, 0.0f);glVertex3f(1.0f, -1.0f, 0.0f);glEnd();glTranslatef(3.0f, 0.0f, -1.0f);glutSwapBuffers();
}
int main(int argc, char * argv[])
{glutInit(&argc, (char**)argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);glutInitWindowPosition(100, 100);glutInitWindowSize(320, 320);glutCreateWindow("Hello OpenGL");glutDisplayFunc(renderScene);glutIdleFunc(renderScene);glEnable(GL_DEPTH_TEST);glutMainLoop();return 0;
}

转载于:https://www.cnblogs.com/xyyh/p/3980280.html

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

  1. OpenGL 各类库的解析 gl/glu/glut/freeglut/glfw/glew

    看了网上很多资料,讲的都不是很全,正好在学这一块,好好地总结一下吧 注:在windows中,对这些库的大小写是不作要求的 gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: ...

  2. OpenGL 各类库的解析gl glu glut freeglut glfw glew

    gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Include\gl ...

  3. 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系

    开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...

  4. opengl库中gl glu glut glaux的区别

    GL GLU GLUT的关系 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库. gl中包含了最基本的 ...

  5. GL GLU GLUT的关系

    GL GLU GLUT的关系 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库. gl中包含了最基本的 ...

  6. OpenGL与gl glu glut freeglut glew glfw封装库关系(十五)

    1.概述     初学者往往搞不明白OpenGL与诸多库的联系下面一张图帮理清楚,gl glu glut freeglut glew glfw都是对OpenGL的封装而已.这些库已经将OpenGL.E ...

  7. OpenGL中的gl,glu,glut的区别

    OpenGL中gl,glu,glut的区别 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包 ...

  8. OpenGL中gl,glu,glut的区别

    OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅 ...

  9. openGL包含gl.h/glu.h/glaux.h/glut.h/报错

    前言 目前现在openGL流行的库是glfw.glew.freetype基本上就能实现一般图形图像渲染,但是我们经常会看到openGL的一些老代码,经常包含gl.h/glu.h/glaux.h/glu ...

最新文章

  1. Arduino Yun的硬件——Arduino Yun快速入门教程
  2. 【设计模式】观察者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  3. Python入门100题 | 第060题
  4. Linux学习之CentOS(二)--初识linux的一些常用命令
  5. Spring Security 基本介绍,初窥路径
  6. 【翻译】卡通图解DNS,你的信息怎么被泄露的?
  7. node--更新数据库问题
  8. 城通网盘,千军万马,千脑网盘,119g网盘哪个适合做网赚?
  9. 海思3559a平台 MIPI YUV 驱动开发
  10. 用 FFMPEG 合并 MP4 视频
  11. 走楼梯1步一阶,一步两阶
  12. MySQL-存储表情字符
  13. 广东省中医院微信公众号医保个账支付功能
  14. 解决安卓手机点击有效,苹果手机点击事件无效的问题
  15. 新博立,存此证-关于可用性的理解
  16. python中reduce函数用法_一文读懂reduce函数
  17. 数据库查询_同时选修了两门课的学生姓名、学号
  18. conda镜像源设置——北京外国语大学镜像
  19. 判断磁盘是机械硬盘还是固态硬盘
  20. tornado异步非阻塞实现方式

热门文章

  1. uniapp MySQL vue ES6 jQuery 个人整合
  2. GPRS模块与STM32的数据传输
  3. SpringCloud多线程链路追踪
  4. 2022N1叉车司机考试题库及模拟考试
  5. 开源中国 码云 代码提交
  6. 【JDBC】idea添加mysql-jar包(很轻松)
  7. 很抱歉遇到一些临时服务器问题
  8. 我研究了一个月阿里的岗位JD。。。
  9. CM+CDH构建企业大数据平台系列(一)
  10. 智能车竞赛:关于车模系列的价格调整