2017-03-03 84 views
0

我想知道最好的方法是在不同颜色的网格上渲染选定的三角形吗?我使用的是OpenGL,但具体的渲染系统可能并不重要。呈现不同颜色的选定三角形?

一种方法是将选定的三角形渲染到现有网格的顶部,但是我觉得使用着色器必须有更好的方法来实现这一点。

回答

1

我认为最简单的方法是为三角形创建一个单独的颜色缓冲区。随后,您可以使用glBufferSubData()(请参阅here)还原取消选定三角形的颜色,并更新那些新选择该帧的颜色。

这假定你知道缓冲区中哪个索引是你想改变颜色的三角形的顶点所在的位置。

也可以让附加缓冲区仅包含布尔值,并用统一变量中指定的值覆盖选定三角形的颜色。

+0

这不会导致光栅化过程中基元上的插值,其中的1或2个顶点设置为所选颜色?这样的颜色缓冲区将如何表示/创建? – zman

+0

仅当您的顶点在原始模型的缓冲区中重用时才使用。如果它们全部被定义为单独的顶点,则没有问题。不幸的是,这是OpenGL的限制。由于您试图对选定的三角形进行可视化,因此无论是否应该标记特定的三角形,您都必须跟踪很多不同的布尔值。把它放在一个单一的统一缓冲区中是不可行的,所以分离三角形和使用一个单独的缓冲区就是我所能看到的最好的解决方案。 – Bartvbl

+0

这个想法是,你首先把你的原始顶点缓冲区和索引缓冲区,并使用索引缓冲区查找顶点缓冲区中的所有顶点,将所有顶点作为单个序列存储在新缓冲区中。由于所有三角形顶点现在都是“分离的”顶点,因此可以为每个顶点指定单独的颜色。这里只需要每个顶点有一个字节。创建另一个顶点缓冲区,可能将所有值初始化为0,并将其作为另一个属性添加到着色器。随后检查输入是否设置为1,如果是,则覆盖顶点的颜色。 – Bartvbl

相关问题