A
AllquantorX
Gast
Hallo,
ich fange gerdae an, micht mit VBOs in JOGL zu beschäftigen. Nun habe ich folgendes Problem und es gelingt mir nicht, das Problem zu finden.
Es light ein kleines Mini-Program vor, das ein Dreick auf dem Bildschirm zeichnet. Ich wollte folgenden Vertex Shader zum Testen einsetzen:
uniform mat4 projection;
uniform mat4 modelView;
in vec3 position;
void main(void) {
gl_Position = projection * modelView * vec4(position, 1.0);
}
Nach Aufbau / Kompilation / Zuweisung des Shaders und des Programms hole ich mir locations für die beiden Matrizen um diese zu setzen.
Das klappt soweit und ich bekomme gültige Werte (>0). Einen glError hagelt es auch nicht. Nun wollte ich testweise eine Identiätsmatrix übergeben, doch dann wird das Dreieck wird nicht mehr angezeigt (ohne das glError etwas meldet). Übergebe ich nichts, wird natürlich auch nichts angezeigt. Nehme ich im Shader die Multiplikation mit den beiden Matrizen raus, klappt wieder alles. Müsste ich nicht bei der Übgabe von Identitäts-Matrizen alles normal sehen müssen (sowie als wenn ich keine Multiplikation im Shader ausführe)?
ich fange gerdae an, micht mit VBOs in JOGL zu beschäftigen. Nun habe ich folgendes Problem und es gelingt mir nicht, das Problem zu finden.
Es light ein kleines Mini-Program vor, das ein Dreick auf dem Bildschirm zeichnet. Ich wollte folgenden Vertex Shader zum Testen einsetzen:
uniform mat4 projection;
uniform mat4 modelView;
in vec3 position;
void main(void) {
gl_Position = projection * modelView * vec4(position, 1.0);
}
Nach Aufbau / Kompilation / Zuweisung des Shaders und des Programms hole ich mir locations für die beiden Matrizen um diese zu setzen.
Java:
projMatrixHandle = gl.glGetUniformLocation(shaderProgram, "projMatrix");
viewMatrixHandle = gl.glGetUniformLocation(shaderProgram, "viewMatrix");
Das klappt soweit und ich bekomme gültige Werte (>0). Einen glError hagelt es auch nicht. Nun wollte ich testweise eine Identiätsmatrix übergeben, doch dann wird das Dreieck wird nicht mehr angezeigt (ohne das glError etwas meldet). Übergebe ich nichts, wird natürlich auch nichts angezeigt. Nehme ich im Shader die Multiplikation mit den beiden Matrizen raus, klappt wieder alles. Müsste ich nicht bei der Übgabe von Identitäts-Matrizen alles normal sehen müssen (sowie als wenn ich keine Multiplikation im Shader ausführe)?
Java:
@Override
public void display(GLAutoDrawable drawable) {
GL3 gl = drawable.getGL().getGL3();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
float[] identity_matrix = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, };
gl.glUniformMatrix4fv(projMatrixHandle, 1, false, identity_matrix, 0);
gl.glUniformMatrix4fv(viewMatrixHandle, 1, false, identity_matrix, 0);
gl.glEnableVertexAttribArray(0);
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vertexHandle);
gl.glVertexAttribPointer(0, 3, GL.GL_FLOAT, false, 0, 0);
gl.glDrawArrays(GL.GL_TRIANGLES, 0, 3);
gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0);
gl.glFlush();
}