當嘗試在片段着色器中使用紋理時,紋理只是全黑。我覺得有一些缺失,但我看過的一切似乎都沒問題。這裏是我的代碼使用質地:片段着色器中的OpenGL紋理黑
GLuint shaderProg = compileShaderPair(vsource, fsource);
GLint texSampler = glGetUniformLocation(shaderProg, "tex");
glUniform1i(texSampler, 0);
glUseProgram(shaderProg);
...
GLuint tex;
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
int width, height, components;
unsigned char* img = stbi_load("texture.jpg", &width, &height, &components, 3);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
glGenerateMipmap(GL_TEXTURE_2D);
頂點着色器:
#version 330
in vec3 pos;
in vec2 uv;
out vec2 texcoord;
void main() {
texcoord = uv;
gl_Position = vec4(pos, 1.0)
}
片段着色器:
#version 330
in vec2 texcoord;
out vec4 outColor;
uniform sampler2D tex;
void main() {
outColor = vec4(texture(tex, texcoord).rgb, 1.0);
}
我已經驗證了紋理加載,且紋理座標精細。
編輯:它在RenderDoc中進行調試時工作正常,但當它本身運行時,它不起作用。
嘗試outcolor = texture(tex,texcoord); –
你是如何準確檢查紋理座標的? – 246tNt
另外,請把你的頂點着色器。 – 246tNt