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

Aktuelle Zeit: Mo Jul 07, 2025 06:40

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 01, 2007 09:26 
Offline
DGL Member

Registriert: So Sep 30, 2007 14:19
Beiträge: 6
Ich habe es nach der ersten Methode versucht, ich hab allerdings jetzt ein Problem.
Zeichnen etc klappt alles Wunderbar bei meinem Würfel.

Jedoch wenn ich ihn drehe,werden die Quads beschnitten. Ich hab mal bilder angehangen.

Je nachdem welche ich zuerst im Quelltext aufrufe, verdeckt es die andere. Liegt wohl am Schreiben in dem Tiefenspeicher, kann man das umgehen?

Code:
  1. glrotatef(45,0,1,0);
  2.     glDepthFunc(GL_LEQUAL);
  3.   glLineWidth(1.5);
  4.  
  5.   glBegin(GL_quads);
  6.   glColor3f(1, 0, 0); glVertex3f(-0.5, -0.5, 0);        //hinten
  7.                         glVertex3f(-0.5, 0.5, 0);
  8.                         glVertex3f(0.5, 0.5, 0);
  9.                         glVertex3f(0.5, -0.5, 0);
  10.   glEnd;
  11.    glDepthMask(true);
  12.    glBegin(GL_LINE_LOOP);
  13.    glColor3f(0, 0, 0); glVertex3f(-0.5, -0.5, 0);       //hinten
  14.                         glVertex3f(-0.5, 0.5, 0);
  15.                         glVertex3f(0.5, 0.5, 0);
  16.                         glVertex3f(0.5, -0.5, 0);
  17.  
  18.    glend;
  19.  glDepthMask(false);
  20.  
  21.  glBegin(GL_quads);
  22.  glColor3f(1, 0, 0); glVertex3f(-0.5, -0.5, 1);   //vorne
  23.                         glVertex3f(-0.5, 0.5, 1);
  24.                         glVertex3f(0.5, 0.5, 1);
  25.                         glVertex3f(0.5, -0.5, 1);
  26.   glEnd;
  27.  
  28.    glDepthMask(true);
  29.    glBegin(GL_LINE_LOOP);
  30.    glColor3f(0, 0, 0); glVertex3f(-0.5, -0.5, 1);   //vorne
  31.                         glVertex3f(-0.5, 0.5, 1);
  32.                         glVertex3f(0.5, 0.5, 1);
  33.                         glVertex3f(0.5, -0.5, 1);
  34.  
  35.    glend;
  36.  glDepthMask(false);
  37.  
  38.    glBegin(GL_quads);
  39.  glColor3f(0, 1, 0); glVertex3f(-0.5, 0.5, 0);        //oben
  40.                         glVertex3f(0.5, 0.5, 0);
  41.                         glVertex3f(0.5, 0.5, 1);
  42.                         glVertex3f(-0.5, 0.5, 1);
  43.  glEnd;
  44.  
  45.  glDepthMask(true);
  46.  glBegin(GL_LINE_LOOP);
  47.  glColor3f(0, 0, 0); glVertex3f(-0.5, 0.5, 0);        //oben
  48.                         glVertex3f(0.5, 0.5, 0);
  49.                         glVertex3f(0.5, 0.5, 1);
  50.                         glVertex3f(-0.5, 0.5, 1);
  51.    glEnd;
  52.    glDepthMask(false);
  53.  
  54.    glBegin(GL_quads);
  55.    glColor3f(0, 1, 0); glVertex3f(-0.5, -0.5, 0);      //unten
  56.                         glVertex3f(-0.5, -0.5, 1);
  57.                         glVertex3f(0.5, -0.5, 1);
  58.                         glVertex3f(0.5, -0.5, 0);
  59.    glEnd;
  60.  
  61.    glDepthMask(true);
  62.    glBegin(GL_LINE_LOOP);
  63.    glColor3f(0, 0, 0); glVertex3f(-0.5, -0.5, 0);      //unten
  64.                         glVertex3f(-0.5, -0.5, 1);
  65.                         glVertex3f(0.5, -0.5, 1);
  66.                         glVertex3f(0.5, -0.5, 0);
  67.    glEnd;
  68.    glDepthMask(false);


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 01, 2007 09:35 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
In meinem aktuellen Projekt benutze ich auch Linien.
Damit die Linien nicht verschwinden benutze ich glPolygonOFfset vor dem zeichen der Flächen.
Wenn man nachher die Linien drüber ballert sieht das ganz ordentlich aus und du kannst den Tiefentest aktiviert lassen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 01, 2007 11:04 
Offline
DGL Member

Registriert: So Sep 30, 2007 14:19
Beiträge: 6
Es wäre schön wenn die linien verschwinden :roll:

Sie überzeichnen ja leider die Flächen.

Hättest du mal nen leichtes Codebeispiel, Wiki hilft mir da ned wirklich weiter, oder ich such an der falschen stelle.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 01, 2007 11:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das Problem bei dir liegt daran, dass du das Schreiben des Tiefenbuffers zum Zeichnen der Flächen deaktivierst. Denn auch wenn das untere Bild auf den ersten Blick keinen Fehler enthält so ist es doch nicht richtig. Denn die untere rote Fläche verdeckt die rechte Grüne. Denn die sollte normal ja paralel zu der anderen Grünen sein. Sieht aber auf dem Bild so aus als ob die im rechten Winkel zueinander stehen würden.

Und warum das so aussieht ist recht einfach. Durch das deaktivierte Schreiben des Tiefenbuffers verhält es sich so als ob der Tiefentest gar nicht aktiv wäre. Es gibt ja keine Tiefeninformationen. Oder nur die der Linien. Also recht kleine. Ansonsten werden die Flächen so gezeichnet wie sie kommen. So viel zum Hintergrund. Denn um zu wissen wie man entwas ändern kann, muss man erst mal wissen was genau schief geht. ;)

Und zu PolygonOffset solltest du mal ins Wiki schauen. glPolygonOffset. Dort ist zwar kein richtiger Code aber die angegebenen Einheiten richten sich auch nach den Größen die du verwedest. Zur Not hilft dezentes rumspielen und darauf achten was passiert.

Wichtig dabei PolygonOffset muss aktiviert und deaktiviert werden. Also vom Prinzip her würde es dann so aussehen.
Code:
  1. // Würfel zeichnen
  2.  
  3. // PolygonOffset aktivieren
  4. glPolygonOffset
  5. glEnable(GL_POLYGON_OFFSET_LINE); << Bin mir nicht 100%tig sicher obs fill ist. Müsste aber eigentlich.
  6.  
  7. // Linien zeichenen
  8.  
  9. glDisable(GL_POLYGON_OFFSET_LINE);


So etwas wie die DepthMask kannst du dann komplett außen vor lassen. Wobei aber für das Offset normal recht kleine Werte ausreichen sollten. Denn durch LEQUAL als Tiefentest wird nur recht wenig schon weggeschnitten. Wodurch die Linien eigentlich auch ohne PolygonOffset schon fast vollständig sichtbar sein sollten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 01, 2007 13:37 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
also ich habs so rum:
Code:
  1.  
  2.   glEnable(GL_POLYGON_OFFSET_FILL);
  3.   glPolygonOffset(1,1);
  4.  
  5. // Flächen zeichnen
  6.  
  7.   glDisable(GL_POLYGON_OFFSET_FILL);
  8.  
  9. // Linien Zeichnen
  10.  


glPolygonOffset nimmt doch nur positive Werte, oder? Würde doch dann nur eine Verschiebung "nach hinten" machen. Was bei den Linien eher hinderlich wäre :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
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 | 14 Queries | GZIP : On ]