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

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

1

31.08.2011, 08:05

[OpenGL ES] Transformationen

Hi Leute,

als versierter Direct3D'ler bin ich mit dem Matrix-Stack aus OpenGL genau NULL vertraut udn verzweifle an einer einfachen Sache: Ich habe ein Android-Projekt, bei der ich in meinem Renderer bei dem onSurfaceChanged()-Eventhandler der Perspektive setze. Innerhalb onDrawFrame() gehe ich wie folgt vor:


C-/C++-Quelltext

1
2
3
4
5
6
gl.glClear(...);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl,0,0,-3,0,0,0,0,1.0f, 0); //von -3 in z richtung nach nullvektor schauen, upvektor ist 0,1,0
_cube.rotateX(1);
_cube.render(gl);



Das funktioniert wunderbar. sobald ich aber einen zweiten dazu rendern will, dan kriege ich das nicht hin, dass sie nebeneinander je bei -1,0,1 und 1,0,1 und sich um die eigene achse drehen! es liegt vermutlich an der fehlenden kameramatrix, die verloren geht... da harkt es bis heute bei mir bei opengl...^^ hier die renderfunktion von cube:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
gl.glPushMatrix();
gl.glLoadIdentity();
gl.glTranslatef(posX,posY,posZ);
gl.glRotatef(angleX, 1, 0, 0);
gl.glRotatef(angleY, 0, 1, 0);
gl.glRotatef(angleY, 0, 0, 1);
gl.glPopMatrix();
//...rendern



was ist mein dummer fehler?!

PS: Warum formatiert hier code immer so besch...eiden unschön?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

31.08.2011, 09:12

LoadIdentity
gluLookAt
glPushMatrix
TRANSFORMATION FÜR 1. WÜRFEL
1. WÜRFEL ZEICHNEN
glPopMatrix
glPushMatrix
TRANSFORMATION FÜR 2. WÜRFEL
2. WÜRFEL ZEICHNEN
glPopMatrix

so sollte es gehen.

Code-Formatierung:
Irgendwie fehlen bei Dir die Zeilenumbrüche. Liegt sicher an Eclipse, oder was Du benutzt.

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

31.08.2011, 09:24

Ah danke das funktioniert - jetzt hab ich das auch verstanden ;).

Ich habe die Zeilenumbrüche per Return-Taste im Textfeld nachträglich eingegeben...^^

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

31.08.2011, 09:26

Hab ich auch mal gemacht, und siehe da - der Code sieht gut aus.
Außerdem gibt es für C++ die "cpp"-Tags ;)
Benutzt Du Opera?

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

31.08.2011, 09:27

Da es Java war hab ich automatisch auf Code gedrückt...nächstes mal versuche ich c++^^. Nein Chrome ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

31.08.2011, 09:32

Achja. An dem Stück konnte man gar nicht sehen, ob es C++ oder Java ist :)
Aber Du sagtest ja "Android"!

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

7

31.08.2011, 10:05

Ja und da arbeite ich erstmal noch nicht mit Native Invocation - hatte ich auch nicht vor :)

Werbeanzeige