首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL/OpenGL ES更新纹理

OpenGL/OpenGL ES更新纹理
EN

Stack Overflow用户
提问于 2013-06-06 22:00:17
回答 1查看 1.1K关注 0票数 0

我需要更改纹理的各个部分,但要知道当前的纹理数据,而不是简单地替换它。

我尝试使用glTexSubImage2D,但它替换了当前数据,而没有给我指定当前数据和新数据之间的某种操作的可能性。

一种解决方案是在内存中缓存纹理数据,并在使用glTexSubImage2D之前进行混合操作,然后使用glTexSubImage2D处理结果,但这只会浪费内存……

有没有什么桌面OpenGL和OpenGL ES 2.0通用的函数可以让我这样做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-06 23:22:56

当然,glTexSubImage2D会覆盖任何以前的数据,并且在CPU上覆盖数据根本不是一种选择(它不仅会浪费内存,更重要的是浪费时间)。

不过,您可以做的是使用。将目标纹理附加为FBO的颜色渲染目标,然后通过渲染带纹理的四边形在其上渲染新数据。子区域可以通过视口设置或四边形大小和位置进行调整。对于实际操作,您可以使用现有的OpenGL混合功能,如果足够,也可以使用自定义片段着色器(但在这种情况下,您不能仅在旧数据之上渲染新数据,而必须使用新数据和旧数据作为纹理,并将材料渲染为全新的纹理,因为否则您无法访问着色器中的旧数据)。

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

https://stackoverflow.com/questions/16964090

复制
相关文章

相似问题

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