顶点着色器和片段着色器执行次数_一步步学OpenGL(27) -《公告牌技术与几何着色器》...

本文介绍了OpenGL中的公告板技术,利用几何着色器实现顶点着色器和片段着色器之间的四边形面向相机。通过几何着色器改变图元的拓扑结构,创建始终面向相机的四边形,减少了渲染复杂度,常用于森林、角色等场景的快速渲染。详细解析了顶点、几何和片段着色器的工作原理,并提供了源代码示例。
摘要由CSDN通过智能技术生成

de110787ae2d58ecb36558955ca6f4ee.png

教程 27

公告牌技术与几何着色器

61ddb106b13ea3e56334080cc8d687ee.png

原文: http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.html

CSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966


背景

从最初的一系列教程我们已经应用过了顶点着色器和片段着色器,但事实上我们还忽略了一个非常重要的着色阶段,叫做几何着色器(GS)。几何着色器在微软的DirectX 10之后被引入,之后也加入到了核心的OpenGL 3.2中。顶点着色器中是按照顶点一个一个执行的,片段着色器则是一个像素一个像素执行,而几何着色器是以图元为单位执行,这意味着在我们绘制三角形时,每次调用几何着色器接收到的就是一个三角形,而绘制直线每次调用收到的就是一条直线,等等。这就给几何着色器提供了一个看待模型的独特的角度,开发者可以知道顶点和顶点之间拓扑关系,从而可以基于此开发一些新的技术。

顶点着色器总是以一个顶点作为输入,并对应一个顶点作输出(不可以自行增加或减少顶点),而几何着色器却有着特殊的功能,它可以改变经过它的图元,这种改变包括:

  • 改变新传递进来的图元的拓扑结构。几何着色器可以接收任何拓扑类型的图元,但只能输出顶点列表(point lists)、折线(line strip)和三角带(triangle strips);
  • 几何着色器接受一个图元作为输入,在处理过程中它可以将这个图元全部丢弃或者输出一个或更多的图元(也就是说它可以产生比它得到的更多或更少的顶点)。这个能力被叫做几何增长(growing geometry)。这一章我们将会利用几何着色器的这种能力。

几何着色器是可选择的。如果我们编译程序的时候不使用几何着色器,图元会直接的从顶点着色器进入片元着色器。这就是为什么我们之前并没有使用顶点着色器,却可以直接跳过该阶段正常绘制出图形。

三角形列表中的三角形图元是以每三个顶点一组构建的,例如,0-2前三个顶点构建起第一个三角形,3-5三个顶点构建起第二个三角形,以此类推。为了计算已有顶点所组成的三角形个数,只要用顶点数除以3即可(多余的顶点直接抛弃)。但事实上,使用三角形带构建更有效,不需要每个三角形都用专门的三个顶点构建,而是在使用三个顶点将第一个三角形构建完成后,重复利用其中的两个顶点,然后再添加一个顶点即可构建第二个三角形。例如0-2三个顶点构建起一个三角形后,再添加一个顶点3,1-3三个顶点构成第二个三角形,这样0-3四个顶点即可紧密拼接构建起两个三角形,以此类推,再添加顶点4,2-4三个顶点又构成一个三角形等等。也就是说,在第一个三角形使用三个顶点构建完成后,每天添加一个顶点即可再构成一个三角形。这里有一个例子如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值