Vorbei an Texturen, shader
Habe ich versucht herauszufinden, wie Sie senden eine textur an einen shader, aber ich kann T es herausfinden. Mein code sieht in Ordnung für mich, aber meine zweite textur ist schwarz.
void setShaders() {
glEnable (GL_TEXTURE_2D);
v2 = glCreateShader(GL_VERTEX_SHADER);
f2 = glCreateShader(GL_FRAGMENT_SHADER);
load_shader(v2,"a.vert");
load_shader(f2,"a.frag");
glCompileShader(v2);
glCompileShader(f2);
p = glCreateProgram();
glAttachShader(p,v2);
glAttachShader(p,f2);
GLubyte* textura=LoadImageToTexture("d.jpg");
GLubyte* textura2=LoadImageToTexture("n.jpg");
GLuint texturaID[2];
glGenTextures(2, texturaID);
glBindTexture(GL_TEXTURE_2D, texturaID[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA, w, h, 0, GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)textura );
glBindTexture(GL_TEXTURE_2D, texturaID[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D,1,GL_RGBA, w, h, 0, GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)textura2 );
glLinkProgram(p);
glUseProgram(p);
GLint baseImageLoc = glGetUniformLocation(p, "tex");
GLint normImage = glGetUniformLocation(p, "norm");
glUniform1i(baseImageLoc, 0);
glUniform1i(normImage, 1);
glActiveTexture(GL_TEXTURE0 + 0);
glBindTexture(GL_TEXTURE_2D, texturaID[0]);
glActiveTexture(GL_TEXTURE0 + 1);
glBindTexture(GL_TEXTURE_2D, texturaID[1]);
}
Shader
[vertex]
void main()
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}
uniform sampler2D tex;
uniform sampler2D norm;
[fragment]
void main()
{
vec4 color = texture2D(tex,gl_TexCoord[0].st);
vec4 color2 = texture2D(norm,gl_TexCoord[0].st);
gl_FragColor = color*color2;
}
BEARBEITEN hier ist der Teufel!!!
glTexImage2D(GL_TEXTURE_2D,**1**,GL_RGBA, w, h, 0, GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)textura2 );
Statt 1 es sollte 0 sein.
Wo sind deine GLSL
ist das so sehr wichtig? Ich Hinzugefügt #version 120 und immer noch nichts
#version
Richtlinien?ist das so sehr wichtig? Ich Hinzugefügt #version 120 und immer noch nichts
InformationsquelleAutor user1075940 | 2012-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre zweite textur scheint entstanden zu sein, in einer falschen Art und Weise :
sollte
Als für Ihre zweite Frage, auch wenn ich nicht sicher bin, es richtig zu machen ; wenn Sie kommentieren Sie die Zeilen, die Sie tatsächlich verlassen der einheitliche Wert auf seinen Standardwert ist 0. Der Netto-Effekt ist also der gleiche wie
InformationsquelleAutor rotoglup