opengl入门(ubuntu版)(一)
原帖地址:
我写的东西大部分是我学习的体会或是工作中遇到问题,所以很多东西可能不是很“精准”,但我尽量做到好理解、好使用。
如果想比较系统学习opengl可以先从一本叫《opengl超级宝典》的书入手,而且我建议对于没有任何opengl的基础的人要看这本书的第四版。因为,opengl在发展过程中以opengl2.0为分界,经历了一个由固定管线到可编程管线的变化,书的第四版还考虑了这个过度性,所以好理解一些,第四版以后干脆不讲固定管线的内容,我觉得不好上手。另外从实用的角度上说,还有很多古老的代码是以固定管线为基础的,对于一些要求不高的场合,固定管线的方式也更方便、简洁。
另外,如果能弄到英文版的书,我建议读英文版的,我个人觉得调理更清晰一些。另外,代码都是英文写的,阅读英文书籍的时候,会积累一些专业性的单词,对于将来理解他人(尤其是开源项目)代码是很有好处的。
1.opengl相关库的安装
首先,ubuntu14.04版本已经默认安装了opengl的核心库,如果你的ubuntu没有,可执行如下命令:
$ sudo apt-get install libgl1-mesa-dev*
这会给出一个有关ubuntu的gl库的列表,你可以选择一个安装。我的ubuntu是14.04.1,安装了libgl1-mesa-dev-lts-utopic。
然后,安装如下库:
$ sudo apt-get install build-essiontial
$ sudo apt-get install libglu1-mesa-dev
$ sudo apt-get install freeglut3-dev
其中freeglut3是glut的一个开源实现(glut本身没有开源实现,所以有两个人就自己做了一套叫freeglut),而libglu是libgl库的进一步封装,提供一些易用的接口。
可以这样解释gl、glu、glut三者的关系,gl是最基本的库,但提供的函数接口用起来很复杂,可能画一条线就要调用7、8个接口,glu就把一些常用gl的接口调用封装为一个接口,增加易用性。而glut提供了一个与平台无关的窗口系统。至于什么是窗口系统,如果没有一定的背景知识,也很不好解释,所以现在无需明白,在后面深入学习了opengl的相关概念之后,就可以很快明白。
2.一个简单的例子
配置完相应的环境后,我们可以先跑一个简单的例子,测试环境配置是否正确。
#include <GL/glut.h>void display(void)
{glClear(GL_COLOR_BUFFER_BIT);//glBegin(GL_POINTS);//glEnd();glRectf(-0.5f,-0.5f,0.5f,0.5f);glFlush();return;
}int main(int argc, char *argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(0, 0); glutInitWindowSize(300, 300);glutCreateWindow("OpenGL 3D View");glutDisplayFunc(display);glutMainLoop();return 0;
}
将以上代码保存为test.c文件,然后执行如下编译命令:
$ gcc ./test.c -lGL -lGLU -lglut
编译成功后会生成一个a.out
文件,执行这个文件会得到如下结果。
可以看出我们成功绘制了一个白色的正方形。
opengl入门(ubuntu版)(一)相关推荐
- 视频教程-OpenGL入门2019版-其他
OpenGL入门2019版 在大学期间系统的学习了opengl.计算机图形学.计算机视觉的算法,与2013年加入4399,任职暗黑战神项目组主程,2015年3月底离职创业,创办了战火信息科技有限公司, ...
- OpenGL入门学习[二] 绘制简单的几何图形
OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...
- 最全面的openGL 入门学习
自己在找openGL学习资料的时候,找到此篇openGL入门学习(虽然不是移动开发,但给我提供了非常好的思路),所以转一下让更多人知道,本文来自http://www.cppblog.com/doing ...
- OpenGL入门学习 (转)
OpenGL入门学习 (转) 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜 ...
- OpenGL入门学习[三]
OpenGL入门学习[三] http://xiaxveliang.blog.163.com/blog/static/2970803420126246501930/ OpenGL入门学习[十一] 我们在 ...
- 【待完善】OpenGL入门学习
严正声明:本文转载自网络,但具体出处未知.如果有读者了解,请联系我更正. 为了阅读方便,我对文字格式进行了修改,并填补了缺少的图片. 我尊重每位作者的权益,如果本文存在侵权行为,请联系我删除并道歉. ...
- 【转载】OpenGL入门学习
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
- OpenGL入门教程(转)
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
- opengl 入门学习
转自 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#include <gr ...
- OpenGL入门暨用C#做个3D吞食鱼(一)第一人称视角的实现
OpenGL入门暨用C#做个3D吞食鱼(一)第一人称视角的实现 废话少说先上图: 图表 1第一人称视角效果图 源代码在文末. 为了学OpenGL,尝试各种代码示例是不错的选择.但是我就经常因为视角不合 ...
最新文章
- centos下添加管理员组和添加管理员用户及相关操作
- C++ leetcode 12. 整数转罗马数字 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
- 第一部分:开发前的准备-第四章 多分辨率多屏幕的支持
- OpenCV自然场景文本检测(附Python代码)
- html带表单和div的素材,用DIV+CSSwe标准布局网页表单的一个例子
- java求100以内偶数和
- 【论文推荐】了解《目标跟踪》必看的6篇论文(附打包下载地址)
- android拦截所有短信源码,Android手机防短信电话骚扰宝典 手机也会思考
- C++关于引用的分析
- 什么是真正的架构设计?十年Java经验让我总结出了这些,不愧是我
- OpenGL学习之路17---- 镜面反射光
- win7电脑桌面图标和下方任务栏都消失了怎么办
- (python代码+讲解)重叠社区发现EAGLE层次算法的实现
- php网页编程,学习掌握动态网页PHP的编程语句
- 股市震荡下如何购买基金
- Android 高德地图中路线规划绘制界面线路
- 帝国双璧--卫青与霍去病
- 泛函分析 02.03 赋范空间-几何结构
- Debian的版本一些记录-sid, testing, buster, bullseye, stretch,jessie
- 张一鸣:白手起家干到千亿身价,位列中国富豪第7位,只用了7年