我遇到了嘗試將紋理加載到VRAM中的問題。我在Mac OS X上使用OpenGL。我通過將顏色傳遞給片段着色器來成功渲染幾何體。但是,只要我嘗試加載紋理,就不會呈現幾何圖形,而只能看到背景顏色。這裏是我的紋理加載代碼:加重OpenGL紋理問題
char imageData[27] = {
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
};
glActiveTexture(GL_TEXTURE0);
GLuint textureID;
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 3, 3, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
GLint uniform_location = glGetUniformLocation(bundle->GetShaderProgramID(), "texture");
std::cout << uniform_location <<std::endl;
glUniform1i(uniform_location, 0);
glEnable(GL_TEXTURE_2D);
這是我的片段着色器代碼:
uniform sampler2D texture;
void main()
{
vec2 coord = vec2(0.5, 0.5);
//gl_FragColor = vec4(coord, 0.0, 1.0);
gl_FragColor = vec4(texture2D(texture, coord).rgb, 1.0);
}
我知道一些這個代碼的可能是沒有必要的,但我一直在嘗試一切我能想到的。
謝謝。
順便說一句,總是用glGetError檢查錯誤。如果您有錯誤,渲染可能會消失。 – alxx 2010-10-13 08:25:20