gpt4 book ai didi

c++ - 使用带有帧缓冲区的 RGBA32F 纹理抛出 INVALID_ENUM 错误

转载 作者:行者123 更新时间:2023-11-28 02:35:19 25 4
gpt4 key购买 nike

我正在尝试使用附加到帧缓冲区的每 channel 32F 的纹理来渲染纹理。我使用正常的无符号 RGBA 纹理正确地完成了它,但我需要在每个 channel 中提高分辨率。

我更改了纹理的内部格式,但应用程序在执行附件时抛出了 INVALID_ENUM 错误。我读到可以用这种格式附加纹理 link link .所以错误可能出在其他地方。

以下是代码片段:

glGenTextures(1, &mTexId);
glBindTexture(GL_TEXTURE_2D, mTexId);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, _width, _height, 0, GL_RGBA32F , GL_UNSIGNED_BYTE, nullptr);

glBindFramebuffer(GL_FRAMEBUFFER, mBufferId);
glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, mTexId, 0);

checkErrors(); // <<--- Here I check the possible errors and it's where i got the INVALID_ENUM

有人能帮帮我吗?非常感谢。

最佳答案

您的 glTexImage2D 调用无效。

GL_RGBA32F 是有效的内部 格式,但不是有效的客户端格式枚举。由于您只是创建纹理而不从客户端内存复制像素数据,因此您指定的格式甚至无关紧要,但它必须仍然有效。

使用

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, _width, _height, 0, GL_RGBA, GL_FLOAT, nullptr);

相反。

关于c++ - 使用带有帧缓冲区的 RGBA32F 纹理抛出 INVALID_ENUM 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27670364/

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