原帖地址:

我写的东西大部分是我学习的体会或是工作中遇到问题,所以很多东西可能不是很“精准”,但我尽量做到好理解、好使用。
如果想比较系统学习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版)(一)相关推荐

  1. 视频教程-OpenGL入门2019版-其他

    OpenGL入门2019版 在大学期间系统的学习了opengl.计算机图形学.计算机视觉的算法,与2013年加入4399,任职暗黑战神项目组主程,2015年3月底离职创业,创办了战火信息科技有限公司, ...

  2. OpenGL入门学习[二] 绘制简单的几何图形

    OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...

  3. 最全面的openGL 入门学习

    自己在找openGL学习资料的时候,找到此篇openGL入门学习(虽然不是移动开发,但给我提供了非常好的思路),所以转一下让更多人知道,本文来自http://www.cppblog.com/doing ...

  4. OpenGL入门学习 (转)

    OpenGL入门学习 (转) 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜 ...

  5. OpenGL入门学习[三]

    OpenGL入门学习[三] http://xiaxveliang.blog.163.com/blog/static/2970803420126246501930/ OpenGL入门学习[十一] 我们在 ...

  6. 【待完善】OpenGL入门学习

    严正声明:本文转载自网络,但具体出处未知.如果有读者了解,请联系我更正. 为了阅读方便,我对文字格式进行了修改,并填补了缺少的图片. 我尊重每位作者的权益,如果本文存在侵权行为,请联系我删除并道歉. ...

  7. 【转载】OpenGL入门学习

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  8. OpenGL入门教程(转)

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  9. opengl 入门学习

    转自 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#include <gr ...

  10. OpenGL入门暨用C#做个3D吞食鱼(一)第一人称视角的实现

    OpenGL入门暨用C#做个3D吞食鱼(一)第一人称视角的实现 废话少说先上图: 图表 1第一人称视角效果图 源代码在文末. 为了学OpenGL,尝试各种代码示例是不错的选择.但是我就经常因为视角不合 ...

最新文章

  1. centos下添加管理员组和添加管理员用户及相关操作
  2. C++ leetcode 12. 整数转罗马数字 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
  3. 第一部分:开发前的准备-第四章 多分辨率多屏幕的支持
  4. OpenCV自然场景文本检测(附Python代码)
  5. html带表单和div的素材,用DIV+CSSwe标准布局网页表单的一个例子
  6. java求100以内偶数和
  7. 【论文推荐】了解《目标跟踪》必看的6篇论文(附打包下载地址)
  8. android拦截所有短信源码,Android手机防短信电话骚扰宝典 手机也会思考
  9. C++关于引用的分析
  10. 什么是真正的架构设计?十年Java经验让我总结出了这些,不愧是我
  11. OpenGL学习之路17---- 镜面反射光
  12. win7电脑桌面图标和下方任务栏都消失了怎么办
  13. (python代码+讲解)重叠社区发现EAGLE层次算法的实现
  14. php网页编程,学习掌握动态网页PHP的编程语句
  15. 股市震荡下如何购买基金
  16. Android 高德地图中路线规划绘制界面线路
  17. 帝国双璧--卫青与霍去病
  18. 泛函分析 02.03 赋范空间-几何结构
  19. Debian的版本一些记录-sid, testing, buster, bullseye, stretch,jessie
  20. 张一鸣:白手起家干到千亿身价,位列中国富豪第7位,只用了7年

热门文章

  1. linux后台进程管理工具supervisor
  2. 使用java.text包格式化数字和日期
  3. 周报(1.13到1.20)
  4. sqlite3 命令行操作
  5. Git基础之(十五)——分支管理——分支管理策略
  6. [WPF]控件应用多个样式
  7. 了解人工智能与智能系统中的先驱人物
  8. j2ee学习方法摘要
  9. 移动脱机 Outlook 数据文件 (.ost)
  10. Java中对数组的操作