OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介
OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介
文章目录
- OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介
- 1.1 环境配置
- 1.2 整体框架
- 1.3 渲染管线
- 1.4 程序流程
- 2 OpenGL扩展
- 2.1添加GLSL扩展
- 2.2 自带的“扩展”
- 2.3 添加全新功能的扩展
- 遗留的问题:关于OpenGL如何添加全新功能的扩展
- 3 总结
上一篇我们具体介绍了一下图形管线的最后一个阶段帧缓存运算,它包括四个部分:裁剪测试、模板测试、深度测试、混合和逻辑运算。其中我们重点介绍了深度测试的内容。然后我们介绍了一下计算着色器。在本篇中我们将对前三章进行一个大体的回顾,我们还介绍一下OpenGL的扩展内容(并不会很深入)。 # 1 前三章回顾 虽然是前三章的内容回顾,但是我们并不会再把知识重新叙述一遍,而是把它们汇集到一起做一个总览,当你看到一些提示(比如函数名、语句)时你能想起对应的知识就OK了,也看看你之前的内容是否掌握了。
回顾部分我会分为四个小部分:分别是环境配置、整体框架、渲染管线、程序流程
1.1 环境配置
1.2 整体框架
1.3 渲染管线
1.4 程序流程
2 OpenGL扩展
OpenGL扩展就是对OpenGL核心功能的一些增强。
在使用任何扩展之前要保证OpenGL实现能够支持扩展
GLuint a=0;
glGetIntegerv(GL_NUM_EXTENSIONS,&a);
//调用以获取可支持的扩展数量
const GLubyte* glGetStringi(GLenum name,GLuint index);
glGetStringi(GL_EXTENSION,0);
//name中输入GL_EXTENSION,后通过编号来查询支持的扩展名字
//(编号就是从0到glGetIntegerv返回的值之间的任意一个数)
好了我们现在找到了你需要的扩展(假设找到了),现在需要你添加扩展:
2.1添加GLSL扩展
#extension GL_AC_footbar_feature : enable
//在着色器的开头添加就是#version 450 core那里
这里我们添加了一个叫GL_AC_footbar_feature的扩展,但是要注意OpenGL知道有该扩展并不意味着底层硬件可以实现(就像老板知道这里需要一个搞计算机图形学的,这并不意味着员工就会计算机图形学)假如硬件可以实现那么在着色器中就有(自动会把它置1)
#define GL_AC_footbar_feature 1
这样我们可以通过判断其是否为1来对着色器程序进行选择性的运行:
#define GL_AC_footbar_feature//如果能用扩展,就做一些事情
#else//如果不能用扩展,就做另一些事情
#endif
还有一种方法来添加扩展
#extension GL_AC_footbar_feature : require
这种方法要求OpenGL一定要使用扩展,如果底层不支持那么编译会强制报错。如果支持,那么将使用扩展。
2.2 自带的“扩展”
有些扩展是基于OpenGL的,他们使得一些本身不被允许的行为可以做,还可以用一些新的标记值,在使用这些扩展时,用就行了,不需要额外进行声明啥的,这就是所谓的自带的“扩展”
2.3 添加全新功能的扩展
详见:(没看懂 = =)
OpenGL版本与OpenGL扩展机制
遗留的问题:关于OpenGL如何添加全新功能的扩展
3 总结
这一篇我们对前三章做了一个知识的梳理(知识图),还提了一下OpenGL扩展的相关内容。
下一篇是对前三章内容的综合应用(五子棋小游戏),其中涉及了很多着色器的细节,还有一点点程序设计在其中,会非常精彩,但可能篇幅会比较长(我尽量把内容放在一篇说完),我们会尽量用更多之前学习的知识(有时候是不得已,有时候是更加方便快速)
我们下篇见~~
关于书籍的问题
如果你手中没有该书,我还是建议你购买一本,毕竟书本毕竟更加严谨专业,我这里难免遗漏一些细节,主要是提供实例,并做一个消化,将很混乱的流程为大家理清,但这笔记一定是通俗的,是对新手友好的(当然有时候你需要在某些方面自己努努力,比如后面出现的基本线性代数的内容,还有C语言或是c++的基础知识,虽然我可能也不太懂O(∩_∩)O,慢慢来吧)。
别被吓住
刚开始的时候很容易被OpenGL的巨长的函数和超级复杂的流程吓到,其实并没有那么可怕,只要对这样或那样的流程熟悉之后,一切都变得相当简单(当然如果你能提出一个更好的流程那就更好了,当我们把很多基础的工作做完,我们会不断的提出新问题新点子,用新的技术来实现它,最终完成OpenGL的学习)
虽然我也不知道后面将是怎样的道路,但至少努力学习是没错的。
我看过的相关内容
以下并不是全看完了,大部分看了15%就看不下去了,实在是没看懂。(本人没什么计算机编程基础,算是野生程序员吧,很多内容都不能标准表述,望见谅)
如果你对opengl的工作有了一定的了解,我一开始也是从这里开始的,但是仍然有很多的不懂的,最后至今为止,我杂糅了很多的网站内容包括LearnOpenGL、极客学院、哔哩哔哩的闫令琪计算机图形学、哔哩哔哩的傅老师的OpenGL课程、OpenGL编程指南"也称为红宝书"、OpenGL超级宝典"也称为蓝宝书"、当然还有很多的csdn文章O(∩_∩)O这就不介绍了,等用到是时候我在放链接吧O(∩_∩)O
这里面图形学比较易懂也很基础推荐可以作为开始(如果你是学OpenGL需要马上用,应该可以跳过,但是其中的内容很是很重要,这会让后面涉及变换透视的章节更加易懂,推荐大家看看),之后是蓝宝书或是极客学院翻译的教程比较推荐,这两个还是比较适合你我这样的新手的。
这里不推荐看的是红宝书,这本书我看了有点类似于字典那样的工具书,不太适合新手上手学,而且讲的也并不是很通俗易懂(可能是我的书版本比较老吧…)
加油
当然如果你对我有信心,我也会持续更新(虽然前路漫漫),跟大家一同进步(虽然很可能没人看(╥╯^╰╥),无所谓了,当然如有错误还请大家指正∠(°ゝ°),哪里不懂我会尽力解决,哪里说的不好也可以指出我会及时修改~)
我们下篇见~~
OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介相关推荐
- OpenGL超级宝典(第7版)笔记13 前三章实例 下个五子棋 (上)
OpenGL超级宝典(第7版)笔记13 前三章实例 下个五子棋 (上) 文章目录 OpenGL超级宝典(第7版)笔记13 前三章实例 下个五子棋 (上) 前言 1 初构建 2 构建数据结构 3 绘制 ...
- 《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序
// GLTools库包含了一个用于操作矩阵和向量的3D数学库,并依靠GLEW获得OpenGL3.3中用来产生和渲染一些简单3D对象的函数, // 以及对视觉平截头体.相机类和变换矩阵进行管理的函数的 ...
- OpenGL超级宝典第7版环境配置
1.下载源码 地址:http://www.openglsuperbible.com/ 2.运行Cmake,编译glfw库 打开项目后,编译工程(Debug和Release下都编译). 把E:\open ...
- OpenGL超级宝典(第7版)笔记4 渲染管线介绍 清单2.3-2.7
OpenGL超级宝典(第7版)笔记4 渲染管线介绍 清单2.3-2.7 文章目录 OpenGL超级宝典(第7版)笔记4 渲染管线介绍 清单2.3-2.7 1 OpenGL简介 2 OpenGL渲染管线 ...
- OpenGL超级宝典学习笔记——操作矩阵
为了更强大的功能和灵活性,我们有时需要直接操作矩阵.在OpenGL中4x4的矩阵用包含16个浮点数值的一维数组来表示,而不是用二维的4x4的数组来表示.OpenGL之所以这么做,因为使用一维数组更高效 ...
- OpenGL超级宝典(第五版)环境配置
本文转自:http://blog.csdn.net/sunny_unix/article/details/8056807,感谢作者分享. OpenGL超级宝典(第五版)环境配置 Vs2008+winX ...
- OpenGL超级宝典(第五版)环境配置【转】
OpenGL超级宝典(第五版)环境配置 Vs2008+winXP 后续会整理Ubuntu 12.04LTS下的配置作者:sunny_unix 1.各种库的配置 (1)glew 下载:https:// ...
- OpenGL超级宝典(第五版) 环境配置
特别提醒:有些在word中或者其他中的代码复制到vs中会报错,原因是word中有些隐含的字符,复制到vs中就会报错:重新输一遍就可以解决问题,这里只是提醒下! 可以参阅我前面转载的一篇文章,进行比较然 ...
- OpenGL超级宝典(第五版) 环境配置(WinXp+VS2008)
转自:http://blog.csdn.net/sunny_unix/article/details/8056807 OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:h ...
- [转]OpenGL超级宝典 5e 环境配置
OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew- ...
最新文章
- Python基础学习!容器:列表,元组,字典与集合!(2)
- IAR for msp430 MDK中 warning: #223-D: function xxx declared implicitly 解决方法
- java统计 pv uv_统计PV、UV的新武器——Aviator
- Python-dataframe合并(merge函数)
- 大四学生对于晚睡的思考
- hdu-1166敌兵布阵(树状数组)
- Android 简单实现订单模块类APP的物流详情页
- app开发学习需要经历哪些流程
- GAN-代码实现资料整合(1)
- Mysql-MVCC
- oracle联合分组查询,Oracle分组查询
- 【matlab图像处理】图像处理工具箱(2)
- 初级的数据分析师,主要需要做哪些工作?
- 第四届高教杯计算机绘图教程,第十一届高教杯全国大学生先进成图技术与产品信息建模.PDF...
- Android面试题解答(结尾有彩蛋)
- 《第七堂棒球课》:MLB棒球创造营·棒球名人堂
- C语言笔记——题目“股神”
- 超级计算机大赛要学什么,超级计算机竞赛“七步成诗”仅三队完赛
- 南加州大学林禹臣:教机器学习常识,是种什么体验?
- 竞选班长的演讲稿_1500字