【发布时间】:2016-09-15 19:05:18
【问题描述】:
我对 iOS 上的 OpenGL ES 还很陌生,并且有一个宠物项目,最好的描述是试图在 iOS 上创建一个更原始版本的精彩 Stellarium。
我正在设法加载大约。 9000 个顶点(每个顶点代表一颗星星在夜空中可见的当前位置),通过将正确的模型旋转矩阵传递给顶点着色器,它们根据一天中的时间和用户的位置实时移动。换句话说,数学不是问题,EAGLView 的基本设置、各种缓冲区和着色器编译等也不是问题,我基本上遵循 Ray Wenderlich 的 this 教程。
计算顶点位置,使其全部位于位置 (0,0,0) 周围任意半径的不可见球体的表面上,模拟夜空。
最终,我希望能够实现基本的拖动/捏合手势来移动观察者的视点(位于位置 0,0,0)并“缩放”更接近球体以查看更多细节,例如作为星名。
我挣扎的部分如下
1) 投影矩阵:在给定上述场景的情况下,关于选择哪种投影的专家建议?我正在努力理解截锥体,但认为这是要走的路。我将如何实现“缩放”更近?
2) 每颗星的形状:目前,这是一个在屏幕上产生一个点的单个顶点。应用星形纹理的最佳方法是什么?
3) 我的顶点数组中最终会有一些顶点保持不动,例如天体网格,显示方位角和高度,即它们不应该像星星一样旋转。如何将旋转矩阵应用于某些顶点,而不是其他顶点?这可以通过将glDrawElements() 拆分成几个部分来实现吗?
【问题讨论】:
标签: ios objective-c iphone opengl-es