【发布时间】:2021-04-18 15:59:44
【问题描述】:
我正在尝试将帧缓冲区对象的纹理映射到三角形网格平面。问题是它最终是黑色的。
帧缓冲区代码。
glGenFramebuffers(1, &fbo);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
glGenTextures(1, &fbo_texture);
glBindTexture(GL_TEXTURE_2D, fbo_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, height, width, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fbo_texture, 0);
所以。问题出在哪里:(
【问题讨论】:
-
“我正在尝试将纹理从帧缓冲区对象映射到三角形网格平面。” - 你想说的是你想要生成纹理然后将该纹理放在网格上。
-
在绘制网格之前是否绑定了默认的帧缓冲区? -
glBindFramebuffer(GL_FRAMEBUFFER, 0); -
@Rabbid76 我愿意,是的。
-
出于调试目的进行一些更改。区分纹理生成或图元绘制是否失败。例如
color = texture(texture, texpos) + 0.5; -
@Rabbid76 啊,好的,所以当我这样做时,表面确实出现了。不知道这意味着什么。此外,制服的名称不是问题。这不是我在程序中实际使用的。
标签: c++ opengl textures framebuffer