layout (vertices = 3) out;
void main(void)
{
if (gl_InvocationID == 0)
{
gl_TessLevelInner[0] = 5.0;
gl_TessLevelOuter[0] = 5.0;
gl_TessLevelOuter[1] = 5.0;
gl_TessLevelOuter[2] = 5.0;
}
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
}
摘自:Haemel,尼古拉斯。 《OpenGL超级圣经:
我如何理解 TessLevelInner 和 Outer 以及为什么 id 0 列出两次?
我怎么能理解gl_TessLevelInner
and gl_TessLevelOuter
?
请参见:gl_TessLevelInner http://www.opengl.org/sdk/docs/man/html/gl_TessLevelInner.xhtml, gl_TessLevelOuter https://www.opengl.org/sdk/docs/manglsl/docbook4/xhtml/gl_TessLevelOuter.xml, OpenGL 曲面细分 - 级别 http://www.opengl.org/wiki/Tessellation#Tessellation_levels
顾名思义,它们控制正在处理的图元的内部和外部曲面细分因子级别。下图展示了各种内部/外部级别设置的结果。
Source: http://antongerdelan.net/opengl/tessellation.html http://antongerdelan.net/opengl/tessellation.html
为什么是指数0
使用了两次?
它被使用两次,因为它访问两个不同的对象。第一次使用索引0
is with
gl_TessLevelInner[0]
第二个是
gl_TessLevelOuter[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)