Я использую freeglut, GLEW и DevIL для визуализировать текстурированный чайник, используя вершинный и фрагментарный шейдер, Все это отлично работает в OpenGL 2.0 и GLSL 1.2 на Ubuntu 14.04.
Теперь я хочу применить карту рельефа к чайнику. Мой лектор, очевидно, не brew собственного чая, и поэтому не знает, что они должны быть гладкими. Во всяком случае, я нашел красиво выглядящий учебник по сопоставлению башен старой школы, который включает в себя фрагментарный шейдер, который начинается:
uniform sampler2D DecalTex; //The texture
uniform sampler2D BumpTex; //The bump-map
То, что они не упоминают, - это как передать две текстуры шейдеру в первую очередь.
Раньше я
//OpenGL cpp file
glBindTexture(GL_TEXTURE_2D, textureHandle);
//Vertex shader
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
//Fragment shader
gl_FragColor = color * texture2D(DecalTex,gl_TexCoord[0].xy);
так что теперь I
//OpenGL cpp file
glBindTexture(GL_TEXTURE_2D, textureHandle);
glBindTexture(GL_TEXTURE_2D, bumpHandle);
//Vertex shader
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1;
//Fragment shader
gl_FragColor = color * texture2D(BumpTex,gl_TexCoord[0].xy);
//no bump logic yet, just testing I can use texture 1 instead of texture 0
но это не работает. Текстура полностью исчезает (фактически, чайник белый). Я пробовал GL_TEXTURE_2D_ARRAY, glActiveTexture и несколько других, вероятно, кажущихся, но бесплодных вариантов.
После просеивания обычного смешанного пакета ссылок на OpenGL и GLSL новые и старые, я пришел к выводу, что мне, вероятно, понадобится glGetUniformLocation
. Как именно я использую это в файле cpp OpenGL для передачи уже заполненных обработок текстуры в шейдер фрагмента?
- Как передать массив текстур разных размеров в GLSL?
- Передача нескольких текстур из OpenGL в шейдер GLSL
- Несколько текстур в GLSL - только один работает
(Это домашнее задание, поэтому, пожалуйста, ответьте с минимальными фрагментами кода (если вообще). Спасибо!)
В противном случае, у кого-нибудь есть чайная уютная сетка?