【发布时间】:2015-08-20 16:31:28
【问题描述】:
在我的 iOS 应用程序中,我将纹理应用于在 OpenGLES1 中渲染的球体。球体可以由用户旋转。如何在任何给定时间跟踪纹理上给定点在二维空间中的位置?
例如,给定 1000px x 1000px 纹理上的点 (200, 200),我想在我的 OpenGL 视图顶部放置一个 UIButton,以便在操纵球体时跟踪该点。
最好的方法是什么?
在我的第一次尝试中,我尝试使用颜色选择技术,在屏幕外帧缓冲区中有一个单独的球体,该球体在点 (200, 200) 处使用带有红色方块的黑色纹理。然后,我使用glReadPixels() 跟踪红色方块的位置,并相应地移动了我的按钮。不幸的是,由于明显的性能原因,无法获取所有像素数据并每秒对其进行 60 次迭代。我尝试了多种方法来优化这个 hack(例如:只迭代红色像素,每 4 个红色像素迭代一次,等等),但它并没有被证明是可靠的。
我是一个 OpenGL 菜鸟,所以我很感激任何指导。有更好的解决方案吗?谢谢!
【问题讨论】:
-
你有什么坐标信息。你有球体中心坐标吗?旋转角度?半径?给我一些工作。
标签: ios opengl-es textures framebuffer opengl-es-1.1