我的iOS应用程序在opengles视图中绘制2D曲线。场景渲染非常昂贵(可能需要1-2秒),这意味着,AFAIK,我无法更改比例,重绘和重新渲染以适应比例尺的增量变化(由于捏和 - 放大)。我目前直接在渲染到屏幕上的缓冲区中绘制。OpenGL ES 2.0以多种分辨率缩放
我认为我可以实现缩放的一种方法是渲染到给定分辨率的纹理,然后使用该纹理的一部分渲染四边形(可能以不同的比例和平移)。我的猜测是,它会使我当前使用的内存翻倍(如果我当然保持纹理的分辨率与屏幕相同)。有人可以证实吗?有没有另外一种方法可以在不重绘的情况下进行缩放,而不会使图形内存使用量加倍?
现在,如果我想保持一个像样的质量,我将不得不以不同的分辨率重新渲染。我最初的想法是“手动”创建一个mipmap,例如2级(1个纹理,100-150%变焦,另一个150-200%变焦)。这一次,我会有1个缓冲区+ 2个纹理。我当然可以在平移时重新渲染,但我认为用户体验不会很好。关于如何从用户体验和/或内存角度改进这些想法的任何想法?
在我的场景中,我将无法使用平铺(此外,场景是动态的)。感谢您的回答,虽然 – user1727274
作为一个方面说明,我有全功能的OpenGL代码。在我的情况下使用UIView没有任何意义。从辅助线程以精确的帧速率渲染也是不方便的。 – user1727274
如果您的渲染需要1-2秒,则无法重新绘制场景并获得良好的用户体验。如果你有多个绘图级别,你的内存将增加更多的x2(150%缩放将意味着225%的内存增加,导致325%)。消除内存消耗并保留所有数据的唯一方法是将其放入某个文件中。一旦你在一些本地磁盘上使用它,你仍然可以使用你的“功能齐全的OpenGL代码”,这只是需要考虑的一点。长篇小说:我认为没有其他办法可以解决您的情况,满足您发布但平铺的所有要求。 –