Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

AWeber

Frischling

  • »AWeber« ist der Autor dieses Themas

Beiträge: 15

Beruf: Student + Softwareentwickler

  • Private Nachricht senden

21

22.11.2012, 16:26

Ich habe jetzt für die Textur die ganzen Modifikationen mit der Klasse Matrix gestrichen und
stattdessen

Quellcode

1
textureMatrix = new float[] {1f, 0f, 0f, 1f}


für eine 2x2 Matrix gemacht.

Das klappt auch wunderbar, die komplette Textur wird mir angezeigt.
Jetzt möchte ich eine 3x3 Matrix verwenden, für Translation,
dazu muss ich ja im Shader sagen

Quellcode

1
uniform mat3 texturePositionMatrix


dass eine 3x3 Matrix kommt und anschließend diese mit

Quellcode

1
GLES20.glUniformMatrix3fv(texturePositionMatrixHandle, 1, false, textureMatrix, 0);


übergeben. Da scheint aber was falsch zu sein denn nun wird mir nichts mehr angezeigt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

22

22.11.2012, 16:27

Wie genau initialisierst du textureMatrix denn nun und wie sieht der Shader dazu aus?

AWeber

Frischling

  • »AWeber« ist der Autor dieses Themas

Beiträge: 15

Beruf: Student + Softwareentwickler

  • Private Nachricht senden

23

22.11.2012, 16:35

Für die 2x2 Matrix habe ich den Shader so gelassen wie vorher.

Dann einfach nur mit

Quellcode

1
textureMatrix = new float[] {1f, 0f, 0f, 1f};


die Matrix erstellt und anschließend mit

Quellcode

1
2
texturePositionMatrixHandle = GLES20.glGetUniformLocation(program, "texturePositionMatrix");
GLES20.glUniformMatrix2fv(texturePositionMatrixHandle, 1, false, textureMatrix, 0);


übergeben.

-----

Für die 3x3 Matrix habe ich im Shader aus
uniform mat2 texturePositionMatrix; ein uniform mat3 texturePositionMatrix; gemacht.

und mit

Quellcode

1
2
texturePositionMatrixHandle = GLES20.glGetUniformLocation(program, "texturePositionMatrix");
GLES20.glUniformMatrix3fv(texturePositionMatrixHandle, 1, false, textureMatrix, 0);


übergeben. Ich weiss dass der Fehler im Shader liegen muss.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

22.11.2012, 16:36

Na zeig eben mal den Code vom Shader und welche Werte du in textureMatrix reinschreibst...

AWeber

Frischling

  • »AWeber« ist der Autor dieses Themas

Beiträge: 15

Beruf: Student + Softwareentwickler

  • Private Nachricht senden

25

22.11.2012, 16:38

Shader

Quellcode

1
2
3
4
5
6
7
8
9
10
private final String VERTEXSHADERCODE = 
"uniform mat4 vertexPositionMatrix;"
+ "uniform mat3 texturePositionMatrix;"
+ "attribute vec4 vertexPosition;"
+ "attribute vec2 texturePosition;"
+ "varying vec2 texture_Position;"
+ "void main() {" 
+ "gl_Position = vertexPositionMatrix * vertexPosition;"
+ "texture_Position = texturePositionMatrix * texturePosition;"
+ "}";


3x3 Matrix

Quellcode

1
textureMatrix = new float[] {1, 0, 0, 0, 1, 0, 0, 0, 1};

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

26

22.11.2012, 16:40

Kompiliert der Shader so überhaupt? Du multiplizierst da eine 3x3 Matrix mit einem 2D Vektor, was eigentlich nicht gehen sollte. Du willst texture_Position = (texturePositionMatrix * vec3(texturePosition, 1.0)).xy; ;)

AWeber

Frischling

  • »AWeber« ist der Autor dieses Themas

Beiträge: 15

Beruf: Student + Softwareentwickler

  • Private Nachricht senden

27

22.11.2012, 16:44

Hahaha das war einfach nur dumm und peinlich.

Wenn einem geholfen wird dann hat man die Angewohnheit
jeden kleinen Mist nachzufragen anstatt nochmal selbst 2 Minuten darüber nachzudenken.

Werbeanzeige