gpt4 book ai didi

ios - 天球中恒星的OpenGL可视化

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:12:45 24 4
gpt4 key购买 nike

我对 iOS 上的 OpenGL ES 相当陌生,并且有一个宠物项目,最好的描述是本质上试图创建一个更原始的精彩版本 Stellarium在 iOS 上。

我正处于设法加载大约9000 个顶点(每个代表一颗星星在夜空中可见的当前位置),通过将正确的模型旋转矩阵传递给顶点着色器,它们根据一天中的时间和用户的位置实时移动。换句话说,数学不是问题,EAGLView 的基本设置、各种缓冲区和着色器编译等也不是问题,我基本上遵循了 this。 Ray Wenderlich 的教程。

计算顶点位置时,所有顶点位置都位于围绕位置 (0,0,0) 具有任意半径的不可见球体的表面上,模拟夜空。

最终,我希望能够实现基本的拖动/捏合手势来移动观察者的视点(位于位置 0,0,0)并“缩放”更靠近球体以查看更多细节,例如作为星星的名字。

我遇到的问题如下

1) 投影矩阵:关于在上述场景中选择哪个投影,有专家建议吗?我正在努力理解截锥体,但认为这是要走的路。我将如何实现“缩放”更近?

2) 每个星星的形状:目前,这是一个单一的顶点,在屏幕上产生一个单一的点。应用星形纹理的最佳方法是什么?

3) 我的顶点数组中最终会有一些顶点保持不动,例如天体网格,显示方位角和高度,即它们不应该像星星一样旋转。如何将旋转矩阵应用于某些顶点,而不应用于其他顶点?这可以通过将 glDrawElements() 分成几个部分来实现吗?

最佳答案

  1. 投影矩阵通常使用辅助函数进行计算。例如,gluPerspective .如果您想实现缩放,您可以调整 FOV(更小/更大的值将放大/缩小)。通常,缩放也通过修改 View 矩阵来实现(同样,通常使用辅助函数计算),这取决于您使用哪种方法(或组合)。

  2. 为了应用纹理,GL 有一个特殊的片段着色器输入变量,称为 gl_PointCoord ,它可用于轻松地将纹理映射到 GL_POINT 原语(请参阅 GL ES 2.0 规范,第 3.3 节“点”)。您还可以编写一个几何着色器,它将点转换为四边形,并编写一个“标准”片段着色器 - 尽管这可能需要更多工作。

  3. 将使用不同统一数据(例如模型/ View /投影矩阵)处理的几何体拆分为单独的绘制调用可能会更容易。这通常是大多数游戏引擎渲染对象的方式,除非绘制调用的预期数量变大,然后它们经常实现某种批处理绘制。但是,如果您只有两套,那应该不是什么大问题。

关于ios - 天球中恒星的OpenGL可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com