我在尝试将纹理加载到 VRAM 时遇到问题。我在 Mac OS X 上使用 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);
}
我意识到其中一些代码可能不是必需的,但我一直在尝试我能想到的一切。
谢谢。