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

Aktuelle Zeit: Mi Jul 16, 2025 21:57

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Würfel Darstellungsfehler
BeitragVerfasst: Mi Mai 30, 2007 20:37 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 20
Ich versuche so einen Würfel darzustellen und zu drehen:
Code:
  1.  
  2. procedure TForm1.Timer1Timer(Sender: TObject);
  3. begin
  4.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  5.  
  6.   glMatrixMode(GL_PROJECTION);
  7.   glLoadIdentity;
  8.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  9.  
  10.   glMatrixMode(GL_MODELVIEW);
  11.   glLoadIdentity;
  12.  
  13.   glTranslated(5,5,-50);
  14.   glRotated(winkely,0,1,0);
  15.   glRotated(winkelx,1,0,0);
  16.   glScaled(10,10,10);
  17.  
  18.   glBegin(GL_QUADS);
  19.     //vorne
  20.     glColor3f(0, 0, 0); glVertex3f(0, 0, 0);
  21.     glColor3f(0, 0, 0); glVertex3f(1, 0, 0);
  22.     glColor3f(0, 0, 0); glVertex3f(1, 1, 0);
  23.     glColor3f(0, 0, 0); glVertex3f(0, 1, 0);
  24.  
  25.     //hinten
  26.     glColor3f(0, 0, 0); glVertex3f(0, 0, 1);
  27.     glColor3f(0, 1, 0); glVertex3f(1, 0, 1);
  28.     glColor3f(0, 0, 1); glVertex3f(1, 1, 1);
  29.     glColor3f(0, 0, 0); glVertex3f(0, 1, 1);
  30.  
  31.     //oben
  32.     glColor3f(0, 1, 0); glVertex3f(0, 1, 0);
  33.     glColor3f(0, 1, 0); glVertex3f(1, 1, 0);
  34.     glColor3f(0, 1, 0); glVertex3f(1, 1, 1);
  35.     glColor3f(0, 1, 0); glVertex3f(0, 1, 1);
  36.  
  37.     //unten
  38.     glColor3f(0, 1, 0); glVertex3f(0, 0, 0);
  39.     glColor3f(0, 1, 0); glVertex3f(1, 0, 0);
  40.     glColor3f(0, 1, 0); glVertex3f(1, 0, 1);
  41.     glColor3f(0, 1, 0); glVertex3f(0, 0, 1);
  42.  
  43.   glEnd;
  44.  
  45.  
  46.   glBegin(GL_TRIANGLE_STRIP );
  47.     //rechts
  48.     glColor3f(0, 0, 1); glVertex3f(1, 0, 0);
  49.     glColor3f(0, 0, 1); glVertex3f(1, 0, 1);
  50.     glColor3f(0, 0, 1); glVertex3f(1, 1, 0);
  51.     glColor3f(0, 0, 1); glVertex3f(1, 1, 1);
  52.  glEnd;
  53.  
  54.  glBegin(GL_TRIANGLE_STRIP );
  55.     //links
  56.     glColor3f(0, 0, 1); glVertex3f(0, 0, 0);
  57.     glColor3f(0, 0, 1); glVertex3f(0, 0, 1);
  58.     glColor3f(0, 0, 1); glVertex3f(0, 1, 0);
  59.     glColor3f(0, 0, 1); glVertex3f(0, 1, 1);
  60.   glEnd;
  61.  
  62.   SwapBuffers(DC);
  63. end;
  64.  

bei der Anzeige wedern Zeiten ausgeblendet. Nun habe ich gesucht und herrausgefunden das das am Backface Culling liegt. Nun möcht e ich die Optimierung nicht abstellen. Und da verstehe ich folgenden Satz nicht:
Zitat:
Durch diese Einstellungen werden nun alle Seiten deren Eckpunkte im Uhrzeigersinn übergeben wurden nicht(!) gezeichnet
Wie ist das im 3D Raum gemeint? Brauche dafür nicht auch normale?[/pascal]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 30, 2007 21:08 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Code:
  1. d --- c
  2. |     |
  3. |     |
  4. a --- b
  5.  

Wenn du jetzt auf diesen Quadrat schaust und es in der Reihenfolge a->b->c->d zeichnest schaust du auf die Vorderseite.
Wenn du hingegen a->d->c->b zeichnest (daher im Uhrzeigersinn) schaust du auf die Rückseite des Quadrates welches mit Culling nicht gezeichnet wird.
Es geht im Prinzip nur um die Definition was Vorder- und was Rückseite eines Vielecks ist.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 30, 2007 21:20 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 20
und wenn das rechteck nun nur auf der z und y Achse ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 30, 2007 21:35 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Die Achse ist egal. Dir muss nur klar sein auf welche Seite des Rechteckes du schaust.
Nehmen wir deinen Würfel:
Das Quadrat von unten ist jetzt deine Vorder- und Rückseite des Würfels.
Damit du jetzt einen geschlossenen Würfel hast musst du bei der Vorderseite auf die Vorderseite schauen und bei der Rückseite auf die ausgeblendete Rückseite.
Somit ist die Vorderseite a,b,c,d und die Rückseite a,d,c,b.
Jetzt ist es auch für deinen Würfel egal ob du von vorne, daher von +z ausschaust oder von -z aus: Du schaust immer auf eine Fläche die aus deiner Perspektive gegen den Uhrzeigersinn gezeichnet wurde.
Als physisches Beispiel kannst du dir ja nen Würfel nehmen und bei der 1 sowie der 6 jeweils gegen die Uhrzeigerrichtung nen Pfeil anbringen.
Jetzt siehst du bei der 1 sowie der 6 immer den Pfeil gegen den Uhrzeigersinn. Und zwar unabhängig davon aus welcher Perspektive du es dir anschaust. Du musstest beim "Erstellen" der Fläche überlegen was die Aussenseite und was die Innenseite sein soll.

Ansonsten findest du vielleicht noch im Artikel glFrontFace Bilder die dir helfen zu verstehen:
Beim 2. Würfel (GL_CW) siehst du die Innenseite des Würfels weil die Zeichenreihenfolge umgedreht wurde.
(Gelogen, aber nehm es erstmal als wahr an, die Wahrheit ist nicht so weit davon entfernt.)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 31, 2007 09:45 
Offline
DGL Member

Registriert: Mi Mai 30, 2007 15:15
Beiträge: 20
Danke jetzt habe ich es verstanden.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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 ]