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

Aktuelle Zeit: Fr Jul 18, 2025 14:21

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: GL_DEPTH_TEST
BeitragVerfasst: Mo Mai 02, 2005 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mär 09, 2005 12:26
Beiträge: 53
Wohnort: Dornbirn
Hallo, ich habe ein Problem und kann es einfach net lösen.
Ich möchte ein 3D Objekt Orthogonal darstellen, aber doch mit depth Test (dass die Seiten, die man net sieht auch nicht gezeichnet werden), kriegs aber einfach net hin.
Hier ist der Code, ist in C++ ist aber sicher net schwer in Pascal zu übersetzen.

Wenn man die Zeilen
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
ausdokumentiert, dann funktionierts auch (halt net so wie ich will).

Code:
  1.  
  2. float tempRotate = 0.0;
  3.  
  4. void testFunction()
  5. {
  6.     float gx, gy, gsx;
  7.     float x, y;
  8.  
  9.     tempRotate += lastFrameTime*10;
  10.     tempRotate = fmod((float)tempRotate, (float)360.0);
  11.  
  12.     gsx = 1.0;
  13.     x = 0.0;
  14.     y = 0.0;
  15.  
  16.     glEnable(GL_DEPTH_TEST);
  17.     glDepthFunc(GL_LESS);
  18.  
  19.     glPushMatrix();
  20.     glBindTexture(GL_TEXTURE_2D, 0);
  21.     glTranslatef(0.0, 0.0, 0.0);
  22.     glRotatef(tempRotate, 0.0, 0.0, 1.0);
  23.     //Y Rotation
  24.     glRotatef(tempRotate, 0.0, 1.0, 0.0);
  25.     ////////////
  26.     glRotatef(tempRotate, 1.0, 0.0, 0.0);
  27.     glScalef(0.05, 0.05, 0.1);
  28.     glColor3f(1.0, 0.0, 0.0);
  29.     //Zylinder zeichnen
  30.     glBegin(GL_QUADS);
  31.     for(int i = 0; i <= 8; i++)
  32.     {
  33.         gx = sin(2*PI*i/8)*gsx;
  34.         gy = cos(2*PI*i/8)*gsx;
  35.         glVertex3f(x, y, 0.0);
  36.         glVertex3f(x + gx, y + gy, 0.0);
  37.         glVertex3f(x + gx, y + gy, 3.0);
  38.         glVertex3f(x, y, 3.0);
  39.         x += gx;
  40.         y += gy;
  41.     }
  42.     glEnd();
  43.  
  44.     x = 0.0;
  45.     y = 0.0;
  46.     glColor3f(0.0, 0.0, 1.0);
  47.     //Kegel zeichnen
  48.     glBegin(GL_TRIANGLES);
  49.     for(int i = 0; i <= 8; i++)
  50.     {
  51.         gx = sin(2*PI*i/8)*gsx;
  52.         gy = cos(2*PI*i/8)*gsx;
  53.         glVertex3f(1.25, 0.625, -3.0);
  54.         glVertex3f(x, y, 0.0);
  55.         glVertex3f(x + gx, y + gy, 0.0);
  56.         x += gx;
  57.         y += gy;
  58.     }
  59.     glEnd();
  60.  
  61.     //Boden Zeichnen
  62.     x = 0.0;
  63.     y = 0.0;
  64.     glColor3f(1.0, 1.0, 0.0);
  65.     glBegin(GL_TRIANGLES);
  66.     for(int i = 0; i <= 8; i++)
  67.     {
  68.         gx = sin(2*PI*i/8)*gsx;
  69.         gy = cos(2*PI*i/8)*gsx;
  70.         glVertex3f(1.25, 0.625, 3.0);
  71.         glVertex3f(x, y, 3.0);
  72.         glVertex3f(x + gx, y + gy, 3.0);
  73.         x += gx;
  74.         y += gy;
  75.     }
  76.     glEnd();
  77.  
  78.     glColor3f(0.0, 1.0, 0.0);
  79.     //Dreiecke Zeichnen
  80.     glBegin(GL_TRIANGLES);
  81.         //1. Dreieck
  82.         glVertex3f(2.40, 0.6, 3.0);
  83.         glVertex3f(2.40, 0.6, 2.0);
  84.         glVertex3f(3.40, 0.6, 3.0);
  85.         //2. Dreieck
  86.         glVertex3f(0.0, 0.6, 3.0);
  87.         glVertex3f(0.0, 0.6, 2.0);
  88.         glVertex3f(-1.0, 0.6, 3.0);
  89.         //3. Dreieck
  90.         glVertex3f(1.2, 1.2, 3.0);
  91.         glVertex3f(1.2, 1.2, 2.0);
  92.         glVertex3f(1.2, 2.2, 3.0);
  93.         //4. Dreieck
  94.         glVertex3f(1.2, -0.6, 3.0);
  95.         glVertex3f(1.2, -0.6, 2.0);
  96.         glVertex3f(1.2, -1.6, 3.0);
  97.     glEnd();
  98.     glColor3f(colorRed, colorGreen, colorBlue);
  99.     glPopMatrix();
  100.     glDisable(GL_DEPTH_TEST);
  101. }
  102.  


Mal danke für eure Hilfe im Vorraus

_________________
Good software is like sex, it's best when it's free


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 02, 2005 21:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich persönlich weiß zwar was du vor hast aber ich kann mir nicht ausmalen wie es aussieht. Evtl wäre ein Bild von dem Zustand wie es ist mal ganz interessant. Das sagt mehr als ein Quellcode.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 02, 2005 21:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mär 09, 2005 12:26
Beiträge: 53
Wohnort: Dornbirn
Entschuldige. Bin etwas übermüdet, kann aber net schlafen bevor das net läuft.

Hier ist der Screenie. Dort wo ich es mit blau eingekreist habe (eingekräkelt), leuchtet die gelbe Unterfläche der Rakete durch. Das sollte sie net, weil man sie ja eigentlich net sieht.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Good software is like sex, it's best when it's free


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 03, 2005 13:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das Bild war mit deaktiviertem Tiefentest, oder? Sieht für mich jedenfalls so aus. Wenn er aber an war, dann kann ich mir gerade nicht so ganz erklären wieso es so ist. Evtl dann einfach mal die Tiefenfunc umdrehen. Also GL_GREATER. Wobei ich das äußerst merkwürdig finden würde. Ich muss aber gestehen, dass ich bisher noch keine 3D Modelle in 2D dargestellt hab. Wenn dann habe ich immer rein 2D gearbeitet. Kann mir also auch nicht erklären, warum das so sein sollte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 03, 2005 15:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mär 09, 2005 12:26
Beiträge: 53
Wohnort: Dornbirn
Hab die Lösung gefunden... Alles was zu tun war, war den Z Buffer zu leeren (glClear(GL_DEPTH_BUFFER_BIT)).

_________________
Good software is like sex, it's best when it's free


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]