1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介

OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介

时间:2022-10-25 19:13:54

相关推荐

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需要马上用,应该可以跳过,但是其中的内容很是很重要,这会让后面涉及变换透视的章节更加易懂,推荐大家看看),之后是蓝宝书或是极客学院翻译的教程比较推荐,这两个还是比较适合你我这样的新手的。

这里不推荐看的是红宝书,这本书我看了有点类似于字典那样的工具书,不太适合新手上手学,而且讲的也并不是很通俗易懂(可能是我的书版本比较老吧…)

加油

当然如果你对我有信心,我也会持续更新(虽然前路漫漫),跟大家一同进步(虽然很可能没人看(╥╯^╰╥),无所谓了,当然如有错误还请大家指正∠(°ゝ°),哪里不懂我会尽力解决,哪里说的不好也可以指出我会及时修改~)

我们下篇见~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。