Opengl es 让精灵在OpenGLES中正确面对摄影机

Opengl es 让精灵在OpenGLES中正确面对摄影机,opengl-es,Opengl Es,我有一个或多或少是2D的游戏,但渲染为3D。摄像机悬停在2D游戏场地上方,从完全垂直的角度倾斜约20度,以提供一点3D视角 我有一些精灵需要渲染成完全方形,因为它们代表球形对象。我的第一种方法是在2D场上渲染四边形,这样可以正确地定位四边形,但是精灵会受到透视失真的影响,并且它并不总是环视四周 我目前的方法是,在渲染精灵时,我移动相机使其垂直于游戏场(和精灵),这保证了四边形不会因透视而扭曲。缺点是精灵的位置与相机倾斜时的位置略有不同 那么,如何渲染以下精灵: 完美的正方形和面向相机,但不需要我

我有一个或多或少是2D的游戏,但渲染为3D。摄像机悬停在2D游戏场地上方,从完全垂直的角度倾斜约20度,以提供一点3D视角

我有一些精灵需要渲染成完全方形,因为它们代表球形对象。我的第一种方法是在2D场上渲染四边形,这样可以正确地定位四边形,但是精灵会受到透视失真的影响,并且它并不总是环视四周

我目前的方法是,在渲染精灵时,我移动相机使其垂直于游戏场(和精灵),这保证了四边形不会因透视而扭曲。缺点是精灵的位置与相机倾斜时的位置略有不同

那么,如何渲染以下精灵:

  • 完美的正方形和面向相机,但不需要我移动我的相机来实现这一点
  • 具有受与摄影机的距离影响的大小(与点精灵不同)

  • 按照您的建议,绘制垂直于摄影机的四边形,但将其放置在场上方一点的位置。上面的距离应该是球体的半径。

    您可以使用始终面向相机的多边形来实现所需的目标。这被称为“广告牌”。这是一个很好的教程,它似乎解释了所涉及的数学问题以及如何使用OpenGL实现它。您仍然可以使用点精灵…使用glPointParameter()可以为它提供深度衰减。我目前正在开发的粒子系统的深度衰减使用0.00025。不利的一面是,在第1代机器上(我想你是为iphone或ipod touch这样做的),你会被最大64x64像素的精灵所困扰

    我不确定移动它们会有什么帮助。我的部分问题是,我无法计算出当四面体不垂直于运动场时,我需要什么样的数学模型才能使四面体面对移动的摄像机。对不起,如果我没有解释清楚的话。这很难用语言表达。谢谢,这很有帮助。我知道这条评论很老,但对于潜在的读者来说,我必须强调,这种方法还有另一个缺点。你的精灵将消失,如果中心如果离开屏幕由于剪辑。