2010-10-13 3 views
0

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

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

BTW, всегда проверяйте ошибки с помощью glGetError. Если у вас есть ошибка, рендеринг может исчезнуть. – alxx

ответ

3

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

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

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 

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

+0

Это точно моя проблема. Я не могу поверить, что все было так просто. Я работаю над этим уже два дня. То, что я хотел сказать выше, заключается в том, что окно рендеринга отображает только цвет фона и ничего больше, и я буду помнить ваше предложение в следующий раз, когда задаю вопрос. О, и вы можете отредактировать свой ответ, чтобы GL_TEXTURE_2D был первым аргументом. Еще раз спасибо. – LandonSchropp

+0

@helixed: ты прав. сделанный. – Bahbar

+0

@helixed: также, только цвет фона странный, так как когда у вас есть неполные текстуры, вы должны увидеть многоугольники, как будто текстура не была включена. Был ли черный цвет фона? (также неплохо выбрать видимые цвета фона) – Bahbar

 Смежные вопросы

  • Нет связанных вопросов^_^