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需要马上用,应该可以跳过,但是其中的内容很是很重要,这会让后面涉及变换透视的章节更加易懂,推荐大家看看),之后是蓝宝书或是极客学院翻译的教程比较推荐,这两个还是比较适合你我这样的新手的。
这里不推荐看的是红宝书,这本书我看了有点类似于字典那样的工具书,不太适合新手上手学,而且讲的也并不是很通俗易懂(可能是我的书版本比较老吧…)
加油
当然如果你对我有信心,我也会持续更新(虽然前路漫漫),跟大家一同进步(虽然很可能没人看(╥╯^╰╥),无所谓了,当然如有错误还请大家指正∠(°ゝ°),哪里不懂我会尽力解决,哪里说的不好也可以指出我会及时修改~)
我们下篇见~~