gpt4 book ai didi

opengl - 如何确定纹理元素中 OpenGL 纹理的大小?

转载 作者:行者123 更新时间:2023-12-04 19:43:41 25 4
gpt4 key购买 nike

我知道这是一个微不足道的问题,但从 glGet() 的文档开始,我还没有找到任何似乎有帮助的信息。我将我的纹理用作 Sprite ,因此以纹素/像素为单位跟踪它们的大小至关重要。

当我使用 glTexImage2D() 创建我的纹理时,我需要将像素数据数组的大小传递给它。但是 OpenGL 是将它存储在任何地方,还是我必须在我的代码中跟踪它们? (这感觉很尴尬,因为客户端代码仍然可以使用 glTexImage2D()/glTexSubImage2D()/glCopyTexImage2D() 等覆盖纹理.调用而不相应地改变大小,从而导致视觉失真。)

最佳答案

正如 Bahbar 所说,glGetTexLevelParameteri 可用于查询 GL_TEXTURE_WIDTH。但是,我强烈建议不要将此用作通用方法。一方面,您可以使用 glGet* 调用来停止管道,因为驱动程序必须让 GPU 完成它正在做的事情,弄清楚您的要求,然后返回答案。结果是性能受到巨大影响。

因此,您最好在自己的代码中像这样管理状态。假设您有一个带有纹理句柄的 Sprite 类(或结构或等效结构)。多花几个字节来跟踪宽度和高度没什么大不了的,而且它会让您不必点击驱动程序或 GPU 来获取信息。

至于 glTeSubImage*,这是关于何时以及如何更新纹理的政策决定。

关于opengl - 如何确定纹理元素中 OpenGL 纹理的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com