Обострение проблемы с OpenGL-текстурой - PullRequest
0 голосов
/ 13 октября 2010

У меня проблемы с загрузкой текстуры в VRAM.Я использую OpenGL в Mac OS X. У меня есть геометрия, которую я успешно отрисовал, передав цвет в свой фрагментный шейдер.Однако, как только я пытаюсь загрузить текстуру, геометрия не отображается, и я вижу только цвет фона.Вот мой код загрузки текстур:

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);
}

Я понимаю, что часть этого кода, вероятно, не нужна, но я пробовал всеЯ могу думать о.

Спасибо.

1 Ответ

3 голосов
/ 13 октября 2010

Наиболее вероятная причина в том, что у вас не отключено отображение, и вы не указали уровни отображения.Таким образом, ваша текстура неполная .

Чтобы отключить ее на этом объекте текстуры (это необходимо сделать с помощью вызова glTexImage2D)

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

Однако вы понимаете, чтовсе ломается "не помогает вообще понять, что ты видишь?В целом, снимок экрана стоит тысячи слов, но если не считать, по крайней мере, описание как терпит неудачу, поможет.

...