2011-03-06 128 views
0

我正在学习opengl es,并计划制作一个程序,该程序的形状可以通过动态删除部分形状切割成更小的形状。约束是我必须能够判断一个对象是否在切割形状的内部或外部。模板缓冲区VS原始镶嵌

我想到的选项是: 1)使用由黑色和白色蒙版组成的模板缓冲区。这样我也可以使用相同的地图进行碰撞检测。 2)另一种选择是动态地改变我的想法渲染原语,然后对其进行细分。这听起来更复杂,目前我最不喜欢的选项。这也会使碰撞检测更加困难。

PS 我想将形状的一部分移除到动画中,我不知道如何选择这些方法中的任何一个都会影响这样做的容易程度。请表达您的意见。

你对此有何看法?请注意,我是opengl的新手,可能会在没有意识到的情况下犯错。

感谢,杰森

回答

2

它通常被认为是一个好主意,只发出写命令的显卡。基本上这是“根本不使用glGet *命令”,因为这些命令的延迟可能有点高。

如果你只是想掩盖的东西,说选项1)是伟大的。当您试图使切割部分脱落时,这实际上不是一种选择,因为您必须检索/重建该部分的顶点。

我不太清楚第二个选项的“tesselation”部分,但是如果您的图元是多边形并且切割是直线,那么很容易计算切割后的2个多边形。事实上,OpenGL中的视口裁剪例程始终存在很多文学作品,例如http://en.wikipedia.org/wiki/Sutherland-Hodgman

从长远来看,首先构建一个什么是(非视觉)模型通常会更好在可视化之前在应用程序中进行。

+0

很感谢您的回复。顺便说一句,我不会使用glRead *我只会覆盖整个缓冲流。通过镶嵌我的意思是把我可能得到的奇怪形状的多边形转换成三角形。 – Jason 2011-03-06 14:32:05