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
#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环境的搭建相关推荐
- OpenGL 各类库的解析 gl/glu/glut/freeglut/glfw/glew
看了网上很多资料,讲的都不是很全,正好在学这一块,好好地总结一下吧 注:在windows中,对这些库的大小写是不作要求的 gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: ...
- OpenGL 各类库的解析gl glu glut freeglut glfw glew
gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Include\gl ...
- 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系
开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...
- opengl库中gl glu glut glaux的区别
GL GLU GLUT的关系 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库. gl中包含了最基本的 ...
- GL GLU GLUT的关系
GL GLU GLUT的关系 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库. gl中包含了最基本的 ...
- OpenGL与gl glu glut freeglut glew glfw封装库关系(十五)
1.概述 初学者往往搞不明白OpenGL与诸多库的联系下面一张图帮理清楚,gl glu glut freeglut glew glfw都是对OpenGL的封装而已.这些库已经将OpenGL.E ...
- OpenGL中的gl,glu,glut的区别
OpenGL中gl,glu,glut的区别 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包 ...
- OpenGL中gl,glu,glut的区别
OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅 ...
- openGL包含gl.h/glu.h/glaux.h/glut.h/报错
前言 目前现在openGL流行的库是glfw.glew.freetype基本上就能实现一般图形图像渲染,但是我们经常会看到openGL的一些老代码,经常包含gl.h/glu.h/glaux.h/glu ...
最新文章
- Arduino Yun的硬件——Arduino Yun快速入门教程
- 【设计模式】观察者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
- Python入门100题 | 第060题
- Linux学习之CentOS(二)--初识linux的一些常用命令
- Spring Security 基本介绍,初窥路径
- 【翻译】卡通图解DNS,你的信息怎么被泄露的?
- node--更新数据库问题
- 城通网盘,千军万马,千脑网盘,119g网盘哪个适合做网赚?
- 海思3559a平台 MIPI YUV 驱动开发
- 用 FFMPEG 合并 MP4 视频
- 走楼梯1步一阶,一步两阶
- MySQL-存储表情字符
- 广东省中医院微信公众号医保个账支付功能
- 解决安卓手机点击有效,苹果手机点击事件无效的问题
- 新博立,存此证-关于可用性的理解
- python中reduce函数用法_一文读懂reduce函数
- 数据库查询_同时选修了两门课的学生姓名、学号
- conda镜像源设置——北京外国语大学镜像
- 判断磁盘是机械硬盘还是固态硬盘
- tornado异步非阻塞实现方式