首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HeightMap : gltexsubimage2d与顶点属性

HeightMap : gltexsubimage2d与顶点属性
EN

Stack Overflow用户
提问于 2012-06-11 09:55:00
回答 1查看 517关注 0票数 0

我有一个动态的地形高度图,它几乎每帧都会被修改,我应该使用gltexsubimage2d和纹理作为高度图还是每帧更新顶点缓冲区,而不是创建vbo?哪种方法应该更快?我知道我正在失去通过vbo发送数据的硬件双线性滤波器,但根据谷歌gltexxubimage2d在移动设备上造成问题,它看起来不像我可以逐帧使用它,因为它的速度很慢。

实际上问题应该是:在纹理中发送数据到gpu内存比使用顶点属性更快吗?它依赖于实现吗?有没有人在android的opengl中实现了纹理更新,例如使用quad作为视频播放画布?我知道这个问题在像mali 400或tegra3这样的新设备上可能是无稽之谈,这两种方法对我来说都应该是性能上的问题,但我希望能与adreno200或sgx535兼容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 20:49:39

我建议使用纹理修改而不是顶点操作。

这是因为与将纹理内存修改为内存相比,VBO操作需要更多的数据移动和内存带宽。

考虑到每个顶点至少有5个项目(x+y+z+tx+ty),但通常有8个项目,考虑法线,这在任何光照算法中都是非常典型的。

另一方面,纹理仅为每个顶点一个值(通常情况下)。

这个解决方案的一个非常常见的错误是,许多菜鸟(我确信这不是你的情况)为他们用于高度贴图的纹理启用mipmap生成。

确保将其禁用:

glTexParameteri(GL_TEXTURE_2D,GL_GENERATE_MIPMAP,GL_FALSE );

另一个建议是将纹理的像素格式降低到最低要求,拥有8888的分辨率比拥有444像素的分辨率要重得多。这意味着每一帧的内存传输速度要快得多。

我希望这能在某种程度上有所帮助。

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

https://stackoverflow.com/questions/10973828

复制
相关文章

相似问题

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