W OpenGL 2.1+ czy przed użyciem tekstur musimy zadzwonić pod numer glEnable(GL_TEXTURE)
? A jeśli mamy kłopot z fakturą, co może być przyczyną?Czy konieczne jest wywoływanie glEnable (GL_TEXTURE) przed użyciem tekstur w OpenGL 2.1?
Aktualizacja:
używam OpenGL 2.1 dla komputerów stacjonarnych i mój krok jest:
obciążenia bmp 24-bitowy obraz (sprawdziłem w gDebuger i pokazać moją teksturę ok, tak jestem pewien, że moja procedura obrazu obciążenia nie powiodła się).
połączeń kilka OpenGL funkcje w
init()
procedude:glGenTextures(1, &texture_id); glBindTexture(GL_TEXTURE_2D, texture_id); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image_width, image_height, 0, GL_BGR, GL_UNSIGNED_BYTE, image_data);
aw draw_scene():
glUseProgram(program); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture_id); glUniform1i(uniform_texture, 0); ...
Vertex shader (wersja 120):
attribute vec3 vPos; attribute vec2 vTexCoord; uniform mat4 MV; uniform mat4 Projection; varying vec2 fragTexCoord; void main() { fragTexCoord = vTexCoord; gl_Position = Projection * MV * vPos; }
Moduł cieniowania fragmentów:
uniform sampler2D my_texture; varying vec2 fragTexCoord; void main() { gl_FragColor = texture2D(my_texture, fragTexCoord); }
Jeśli używasz cieniowania, to wątpię, aby 'glEnable (GL_TEXTURE)' cokolwiek zrobił. Czy możesz dać zrzut ekranu z tego, co dostajesz, lub opisać problem z wyjściem, który masz bardziej szczegółowo? – TheAmateurProgrammer
Myślę, że niektóre z moich błędów parametrów, wyczyściłem i przepisałem cały kod tekstury i teraz działa! Czy ktoś może mi wyjaśnić, co różni bettwen 'GL_RGBA8',' GL_RGBA', ... in 'internalFormat'? Jeśli użyłem 'GL_RGB' w' internalFormat', to czy mogę uzyskać dostęp do elementu alpha w shaderze fragmentów, jak: 'texture2D (myTexture, texCoord) .a'? –