我正在尝试用FBO纹理绘制一个立方体.纹理被正确渲染(我可以在gDebugger中看到),但它不会在立方体上渲染.我认为这可能是FBO纹理的一个问题所以我加载了一个普通的纹理并尝试了它,但我得到了同样的问题,只是一个黑色的立方体.
单步执行gDebugger中的程序,我可以看到纹理都正确加载并绑定,但没有绘制任何内容.texcoords似乎也没有任何问题.请注意,我还尝试在片段着色器中输出纯色,它可以正常工作.
这是我的顶点着色器:
#version 420
uniform mat4 projection;
uniform mat4 view;
uniform mat4 model;
layout(location = 0) in vec3 vertex;
layout(location = 1) in vec2 texcoord;
out vec2 f_texcoord;
void main() {
gl_Position = projection * view * model * vec4(vertex, 1.0);
f_texcoord = texcoord;
}
Run Code Online (Sandbox Code Playgroud)
这是我的片段着色器:
#version 420
uniform sampler2D tex;
in vec2 f_texcoord;
out vec4 gl_FragColor;
void main() {
gl_FragColor = texture2D(tex, f_texcoord);
}
Run Code Online (Sandbox Code Playgroud)
这是我绘制立方体的地方:
ShaderManager::Get("world")->Use();
glBindVertexArray(cube_vao);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
glDrawArrays(GL_TRIANGLES, 0, 36);
glBindTexture(GL_TEXTURE_2D, 0);
glBindVertexArray(0);
Run Code Online (Sandbox Code Playgroud)
我必须是盲人,因为我看不出错误.
(另请注意,我正在使用SFML和GLEW进行上下文创建和扩展.) …