首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2D OpenGL ES架构

2D OpenGL ES架构
EN

Stack Overflow用户
提问于 2011-05-19 23:03:14
回答 1查看 520关注 0票数 2

我正在开发的应用程序显示了一个大的(大约1M个顶点)静态2D图像。由于内存限制的问题,每次用户滚动或缩放时,我都会用新数据填充VBO,给人一种整个图像“存在”的印象,尽管它并不存在。

这种方法有两个问题: 1)尽管响应性“足够好”,但如果我能让滚动缩放更快、更少波动,那就更好了。2)我一直坚持在一次绘制中可以完成的64k顶点限制,这对一次可以显示多少图像设置了硬限制。如果能看到更多的图像,甚至同时看到所有的图像,那就太好了。尽管目前的性能已经足够好了,因为我们处于原型阶段,并且已经设置了数据来处理限制,但要进入产品级别,我们必须摆脱这种限制。

最近我发现,通过使用"android:largeHeap“选项,我可以在Motorola Xoom上获得256MB的堆空间,这意味着我可以将整个图像存储在VBO中。在我的理想世界中,我会简单地将VBO传递给OpenGL引擎,并告诉它相机已经移动,或者使用glScale/glTranslate来缩放/滚动。

我的问题是:我在正确的轨道上吗?我是不是应该总是“画”出所有的区块,让OpenGl找出哪些区块是实际可见的,还是自己找出哪些区块是可见的?使用gluLookAt和glScale/glTranslate有什么区别吗?

我不关心宽高比失真(图像是数学生成的,而不是照片),它比它的高度宽得多,未来顶点的数量可能会变得更大(例如60M)。耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-19 23:13:23

永远不要让OpenGL自己弄清楚屏幕上是什么。他不会。所有的顶点都会被转换,所有不在屏幕上的顶点都会被裁剪;但你对场景的OpenGL有更好的了解。

使用huuuge 256Mo VBO会让你每次渲染整个场景,每次都会变换所有的顶点,这对性能不好。

创建一些小的VBO(例如,3x3网格在任何时候都应该是可见的),并且只显示那些可见的VBO。基于移动外推的可选预填充未来VBO...

gluLookAt和glTranslate/...之间没有区别。两个都是计算矩阵,仅此而已。

顺便说一句,如果你的图像是静态的,你不能预先计算它(就像谷歌地图一样)吗?同样,您的数据是否提供了在缩小时进行“缩小”的方法?例如,对于点云,仅显示N个点中的1个...

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6060709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档