我遇到了尝试将纹理加载到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