gpt4 book ai didi

c++ - 将 GL_UNSIGNED_BYTE 上传到 GL_FLOAT 纹理

转载 作者:行者123 更新时间:2023-11-30 02:15:21 32 4
gpt4 key购买 nike

我有一个正常创建的 OpenGL 纹理,使用 GL_FLOAT 作为其数据类型:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Dims.x, Dims.y, 0, GL_RGBA, GL_FLOAT, Data);

(Data 作为 float 数组正确发送。)

然后我必须使用无符号字节形式的数据更新纹理。使用 GL_UNSIGNED_BYTE 使用 glTexSubImage2D 更新纹理是否合法?

glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, Dims.x, Dims.y, GL_RGBA, GL_UNSIGNED_BYTE, NewData);

(NewData 作为 unsigned char* 发送。)

文档似乎没有提及在这些函数之间使用不同数据类型的任何内容。是否可以通过这种方式更新纹理,或者纹理数据是否必须转换为 float*

最佳答案

在桌面 OpenGL* 中,只要 pixel transfer formatinternal format 属于同一类型,转移将起作用。所谓“种类”,我的意思是这两种格式必须谈论同一种数据。您不能将深度像素数据上传为颜色内部格式。如果内部格式是整数格式,则像素传输格式必须是 _INTEGER 版本之一。

但除此之外,没有限制...只要您不喜欢性能。但是,将 GL_FLOAT 数据发送到 16F 纹理也不是特别快。

*:我提到桌面 OpenGL 是因为 OpenGL ES 特别要求要匹配的格式。因为他们喜欢表演 ;)

关于c++ - 将 GL_UNSIGNED_BYTE 上传到 GL_FLOAT 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56310425/

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