Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 06, 2025 12:26

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Positionierungs-Probleme
BeitragVerfasst: Do Nov 08, 2007 00:08 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Hallo alle miteinander!!!!
Folgendes Problem: Ich versuche gerade einige Objekte zu platzieren, sollte ja eigentlich kein Problem sein. Dafür verwende ich die Funktionen glPushMatrix bzw. glPopMatrix, wie im Tutorial beschrieben. Leider funktioniert des rein gar nicht. Ich möchte die Objekte nebeneinander setzen und die beiden äußeren mit Drehung versehen. Musste zwar ein wenig mit den Werten herum probieren (was ich schon reichlich seltsam fand, aba gut), ging aber irgendwie. Tjaaa, dann wollte ich ne Spielgung machen (einfach wieder eine Box drunter) und dann gings los: Des Teil is absolut verdreht, steht also net auf 0°, und eine Positionierung is schlicht unmöglich bzw. unlustig. Ich häng mal meinen Render-Code an, wäre echt toll, wenn ihr mir helfen könntet....
THX scho mal im voraus!!!
Code:
  1. procedure TGLForm.Render;
  2. begin
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4.  
  5.   glMatrixMode(GL_PROJECTION);
  6.   glLoadIdentity;
  7.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  8.   glMatrixMode(GL_MODELVIEW);
  9.   glTranslatef(0, 0, -5);
  10.   glPushMatrix();
  11.   glTranslatef(-2.3, -1, 0);
  12.    glBindTexture(GL_TEXTURE_2D, TexID[1]);
  13.    glrotatef(60, 0, 1, 0);
  14.    glScaleF(0.8, 0.8, 1);
  15.    glBegin(GL_QUADS);
  16.     glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
  17.     glTexCoord2f(0, 1); glVertex3f(3.75, 0, 0);
  18.     glTexCoord2f(1, 1); glVertex3f(3.75, 2.5, 0);
  19.     glTexCoord2f(1, 0); glVertex3f(0, 2.5, 0);
  20.    glEnd;
  21.   glPopMatrix();
  22.  
  23.  
  24.   glTranslateF(-1.8, -1, 0);
  25.   glBindtexture(GL_TEXTURE_2D, TexID[2]);
  26.   glBegin(GL_QUADS);
  27.    glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
  28.     glTexCoord2f(0, 1); glVertex3f(3.75, 0, 0);
  29.     glTexCoord2f(1, 1); glVertex3f(3.75, 2.5, 0);
  30.     glTexCoord2f(1, 0); glVertex3f(0, 2.5, 0);
  31.    glEnd;
  32.    glPopMatrix();
  33.  
  34.   glTranslateF(4.1, 0, 0);
  35.   glBindTexture(GL_TEXTURE_2D, TexID[1]);
  36.   glrotatef(120, 0, 1, 0);
  37.   glScaleF(0.8, 0.8, 1);
  38.   glbegin(GL_QUADS);
  39.     glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
  40.     glTexCoord2f(0, 1); glVertex3f(3.75, 0, 0);
  41.     glTexCoord2f(1, 1); glVertex3f(3.75, 2.5, 0);
  42.     glTexCoord2f(1, 0); glVertex3f(0, 2.5, 0);
  43.   glEnd;
  44.   glPopMatrix();
  45.  
  46.   gltranslateF(5, -1, 0);
  47.   glBegin(GL_QUADS);
  48.    glColor3f(1, 0, 0); glVertex3f(0, 0, 0);
  49.    glColor3f(1, 0, 0); glVertex3f(3.75, 0, 0);
  50.    glColor3f(1, 0, 0); glVertex3f(3.75, 3.75, 0);
  51.    glColor3f(1, 0, 0); glVertex3f(0, 2.5, 0);
  52.   glEnd;
  53.   SwapBuffers(DC);
  54. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 00:11 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Du popst ohne zu pushen *hust*
Das ganze ist ein Stack und du kannst nur solange Elemente von dem Stack nehmen wie du sie drauf getan hast. Daher müsstest du öfter glPushMatrix ausführen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 18:15 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
@i0n0s: diesmal warst du schneller :D

@alkodil: stell dir den matrixstack wie einen stapel teller vor. du kannst nur einen teller runternehmen wenn du vorher einen draufgestellt hast. und komm mir jetzt nicht mit: "ich hab ne spülmaschine".... :lol:

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 20:18 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@damadmax: Wenn du schon verlinkst dann richtig: Stack 8) ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 22:41 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
Also srry, ich bin zu bescheuert für diese (3D) Welt:
Genau so, wie ich es in meinen Code drin stehen habe, stehts doch auch im Tutorial oda net? Ich hab jetzt mal ein wenig das PushMatrix und das PopMatrix vertauscht, mit extrem seltsamen Ergebnisse: Es ist überhaupt nichts mehr an seinem Platz und alles ist irgendwie gedreht (obwohl des in der Mitte eigentlich net gedreht sein sollte). Ich blick nich mehr durch. Wäre toll, wenn ihr mir vllt n Code-Beispiel geben könntet.
Danke schon mal für eure vorhergehende Bemühungen !!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 08, 2007 23:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Pushen schiebt 1 Element auf den Stack, Poppen holt 1 wieder herunter. Wenn man aus deinem Code alles wegstreicht, was nicht Pushen oder Poppen ist, dann steht das noch da:
Code:
  1. Push
  2. Pop
  3. Pop
  4. Pop

Zunächst schiebst du ein Element auf den Stack, dann ziehst du es wieder runter. Aber dann versuchst du 2x was vom Stack zu holen, was gar nicht da ist.
Du musst also entweder nach jedem Poppen sofort wieder Pushen oder am Anfang 3x Pushen.

Edit: Zum Thema Poppen und (Elemente) herunterholen... Stacks sind definitiv nicht jugendfrei. :D

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 09, 2007 08:50 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Flash hat geschrieben:
@damadmax: Wenn du schon verlinkst dann richtig: Stack 8) ;)


den wikipedia artikel fand ich aber schöner :)

sprich: der artikel im dgl wiki könnte vielleicht noch etwas aufgepeppt werden...mal sehen...wenn ich fürs wiki freigeschaltet bin...

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 11, 2007 01:34 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 26
mmmh, ok, das war peinlich......
Man sollte vllt lernen, Tutorials richtig zu lesen. Srry, für die blöde Frage und Danke, ihr habt mir seeeeeehr geholfen !!!!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]