使用 Android OpenGL ES 1.1 (HTC Desire)...
我一般遇到的问题是这样的:
我在复杂的场景中渲染了各种 3D 对象。我想检查用户是否单击了特定对象。该对象可能被部分隐藏,因此可能在场景中显示为几乎任何形状。如果用户单击场景中可见的对象的一部分,我只想允许“选择”对象。这意味着我不能对对象交集使用基于矢量的计算,因为这些计算不能轻易考虑到对象的隐藏区域。
于是我想出了一个主意……
我设置了模板缓冲区,以便在对象可见的任何地方,模板缓冲区都填充 1,而模板缓冲区中的其他任何地方都为 0。当用户单击场景中的特定像素时,我只需要检查模板缓冲区即可查看它是否包含 1 或 0,指示对象是否被单击。
这在 PC 上完美运行,但在 Android OpenGL ES 1.1 上,我似乎无法使用 glReadPixels() 从模板缓冲区读取数据,因为不支持 GL_STENCIL_INDEX。
有谁知道是否有办法从模板缓冲区中读取这个 0/1?或者谁能想到一个更好的算法来确定我的对象是否被点击?
非常感谢