Hallo alle zusammen!
Ich habe ein Problem. ICh bin mir auch gerade nicht so sicher ob das hier rein passt, aber ich wusste nicht wo sonst.
Meine selbst erstellte Textur:
Auf die Grafikkarte geladen mit:
angezeigt mit
und dem Quadrat, was so aussieht:
Wir nicht richtig angezeigt.
Aus irgendeinem Grund seh ich das Quadrat weiss anstatt. 4 Pixel (2x2, s,w,s,w).
Der Shader ignoriert die Normalen (beabsichtigt!), deswegen werden die nicht mit in den Shader gegeben. Die brauch ich aber noch gar nicht.
Was mach ich falsch?
[Edit:]
Hier noch die Shader:
Ja, ich weiß, v_color tut noch nichts
Ich habe ein Problem. ICh bin mir auch gerade nicht so sicher ob das hier rein passt, aber ich wusste nicht wo sonst.
Meine selbst erstellte Textur:
Code:
GLubyte texture[] = {
255,255,255,
0,0,0,
255,255,255,
0,0,0
};
Auf die Grafikkarte geladen mit:
Code:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 2, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, texture);
angezeigt mit
Code:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// load texture
glUniform1i(_shaderStruct.samplerHandle, 0);
// update vertex information
glEnableVertexAttribArray(_shaderStruct.positionHandle);
glEnableVertexAttribArray(_shaderStruct.texCoordHandle);
glVertexAttribPointer(_shaderStruct.positionHandle, 3, GL_FLOAT, GL_FALSE, 0, _quad.getVertices());
glVertexAttribPointer(_shaderStruct.texCoordHandle, 3, GL_FLOAT, GL_FALSE, 0, _quad.getTexCoords());
// draw mesh
glDrawElements(GL_TRIANGLES, _quad.getIndiceCount(), GL_UNSIGNED_SHORT, _quad.getIndices());
Code:
float verts[] = {
-1.f, -1.f, 0.f,
1.f, -1.f,0.f,
1.f,1.f,0.f,
-1.f,1.f,0.f
};
float normals[] = {
0.f, 0.f, 1.f,
0.f, 0.f, 1.f,
0.f, 0.f, 1.f,
0.f, 0.f, 1.f,
};
float texCoords[] = {
0.f,0.f,
1.f,0.f,
1.f,1.f,
0.f,1.f
};
unsigned short indices[] = {
0,1,3,1,3,2
};
Wir nicht richtig angezeigt.
Aus irgendeinem Grund seh ich das Quadrat weiss anstatt. 4 Pixel (2x2, s,w,s,w).
Der Shader ignoriert die Normalen (beabsichtigt!), deswegen werden die nicht mit in den Shader gegeben. Die brauch ich aber noch gar nicht.
Was mach ich falsch?
[Edit:]
Hier noch die Shader:
Code:
static const char *vertexShaderSource =
"attribute vec4 a_position; \n"
"attribute vec3 a_normal; \n"
"attribute vec2 a_texCoords; \n"
"attribute vec4 a_color; \n"
"varying vec4 v_color; \n"
"varying vec2 v_texCoords; \n"
"uniform mat4 u_mvp; \n"
"void main() { \n"
" v_color = a_color; \n"
" v_texCoords = a_texCoords; \n"
" gl_Position = u_mvp*a_position;\n"
"}";
static const char *fragmentShaderSource =
"precision mediump float; \n"
"varying vec4 v_color; \n"
"varying vec2 v_texCoords; \n"
"uniform sampler2D s_texture; \n"
"void main() { \n"
" gl_FragColor = texture2D(s_texture, v_texCoords); \n"
"}";
Ja, ich weiß, v_color tut noch nichts

Anhänge
Zuletzt bearbeitet: