【发布时间】:2016-06-30 08:10:05
【问题描述】:
据我了解,OpenGL 中的索引或IBOs 主要用于减少为给定几何图形绘制所需的顶点数。我知道使用索引缓冲区,OpenGL 只绘制具有给定索引的顶点并跳过任何其他顶点。但这不是消除了使用纹理的可能性吗?据我所知,如果您跳过带有索引缓冲区的顶点,它也会跳过它们的顶点属性吗?如果我的顶点属性设置如下:
attribute vec4 v_Position;
attribute vec2 v_TexCoord;
然后使用索引缓冲区和glDrawElements(...),不会消除纹理的使用,还是v_Position 得到“重用”?如果他们不这样做,我如何在使用索引缓冲区时进行纹理处理?
【问题讨论】:
-
索引让您可以从索引中选择要渲染的顶点,就好像您已经完成了指定该顶点的工作一样。您可以多次指定一个顶点,在这种情况下,它只会再次渲染(通常作为不同图元的一部分)。
-
但是通过多次指定该顶点,不会多次指定其纹理坐标吗?从而使纹理变得不可能?
-
是的,纹理坐标将被多次指定,因为它是顶点的一部分。不,它不会使纹理化成为不可能,因为纹理坐标是跨基元插值的(除非您使用平面着色),并且您通常会在不同的基元中重用顶点。
-
哦,不,让我重新表述一下我的意思:如果我想对某些东西进行纹理处理,是否需要多次指定顶点?
-
例如纹理立方体。
标签: c++ c opengl indexing index-buffer