我正在制作一个显示行星的2D图形应用程序。我说2D,因为该应用的大部分将是2D。然而,我希望将一些3D对象渲染为离屏(到纹理)的动态精灵,透明(可能是半透明)区域,然后将这些渲染纹理渲染为活动屏幕作为2D纹理四边形。在这种情况下,直接渲染到屏幕上的3D对象不是最优的,因为这需要我实施某种3D拾取。我在数学上还没那么先进。还要注意,主屏幕渲染将是正确的,而屏幕外渲染将是透视。Android /离线渲染纹理
我该如何做到这一点(一般的想法,不需要具体细节),以及最有效的方法是什么?这会减少对各种设备的支持吗?此外,如果3D精灵渲染每隔一帧(例如旋转精细的数量)不断刷新,会不会通过连续卸载/重新加载纹理来消除帧率?我想有些场景可能有多达10个这样的3D屏幕外精灵。
感谢您的帮助
我想我知道你在说什么。您可能会建议使用视口将我的绘图约束到主屏幕的特定区域,并在那里渲染3D行星。这听起来像一个好主意。但是,(每一帧)创建视区,将渲染模式更改为透视图,渲染行星,然后将视图更改回正切,会更昂贵吗?这可能每帧发生几次。看起来屏幕外缓冲区(FBO)具有其自己的确定渲染状态会使状态更改更少。 – user2255673 2013-04-08 21:59:23
没有任何机会切换视窗和某些矩阵比任何离屏缓冲区慢。此外,如果您使用ES1,甚至不能拥有“自己的确定渲染状态”,则在绘制到另一个缓冲区然后返回时必须将其切换。如果你使用ES2,你可以在两种情况下都有两种程序,每种都有自己的状态。 – 2013-04-09 05:30:23