Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL entscheidet willkürlich, ob es zeichnen soll (https://www.delphipraxis.net/128060-opengl-entscheidet-willkuerlich-ob-es-zeichnen-soll.html)

bianfable 23. Jan 2009 11:42


OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Es klingt unglaublich, aber OpenGL zeichnet Dreiecke bei mir nur, wenn ich bestimmte Koordinaten eingebe. Bei manchen klappts, bei manchen einfach nicht! Wie ist das möglich???

Folgendes Dreieck wird ohne Probleme angezeigt:
Delphi-Quellcode:
  glBegin(GL_TRIANGLES);
    glColor3f(1,0,0); glVertex3f(-4, 0, 0);
    glColor3f(1,1,0); glVertex3f( 0, 0, 0);
    glColor3f(1,1,1); glVertex3f(-2, 2, 0);
  glEnd;
Dieser Code, aus einem Tutorial, ergibt nur den schwarzen Hintergrund:
Delphi-Quellcode:
  glBegin(GL_TRIANGLE_STRIP);
    glColor3f(1,0,0);
    glVertex3f(-1,0,0);
 
    glColor3f(1,1,0);
    glVertex3f(0,1,0);
 
    glColor3f(1,1,1);
    glVertex3f(1,0,0);
 
    glColor3f(0,1,1);
    glVertex3f(2,1,0);
 
    glColor3f(0,1,0);
    glVertex3f(3,0,0);
  glEnd;

jfheins 23. Jan 2009 12:06

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Und wenn du die Punkte in der umgekehrten Reihenfolge angibst? Also so:

Delphi-Quellcode:
  glBegin(GL_TRIANGLE_STRIP);
    glColor3f(1,0,0);
    glVertex3f(-1,0,0);

    glColor3f(0,1,0);
    glVertex3f(3,0,0);

    glColor3f(0,1,1);
    glVertex3f(2,1,0);

    glColor3f(1,1,1);
    glVertex3f(1,0,0);

    glColor3f(1,1,0);
    glVertex3f(0,1,0);

  glEnd;

rollstuhlfahrer 23. Jan 2009 13:29

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
HI,

OpenGL entscheidet, ob etwas von vorne sichtbar ist oder von hinten richtbar ist, allein daran, wie ein "Objekt" definiert wurde. Standardmäßig ist für OpenGL alles, was gegen den Uhrzeiger definiert wurde, vorne and vice versa.

Bernhard

bianfable 23. Jan 2009 13:44

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Stimmt, ihr habt grundsätzlich recht. Die Teile, die ich nicht gesehen habe waren auf der anderen Seite (glRotatef), aber der Autor des Tutorials hat dann wohl mächtig was falsch gemacht. Ich hab die Punkte in ihrer Reihenfolge umgedreht, wie du gesagt hast, und siehe da, jetzt ist der andere Teil der gesamten Figur sichtbar, aber nie alles auf einmal!

mr_emre_d 24. Jan 2009 03:42

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Das ganze nennt sich Cullface !
Alles was im Uhrzeigersinn gezeichnet wird, wird als Vorderseite betrachtet
und umgekehrt

Falls du das aus irgendeinem Grund bei der Initialisierung aktiviert hast
- deaktivieren:

glDisable( gl_Cull_Face );

Falls das nicht hilft, schlage ich vor, dass du deine Render-Methode hier
reinpostest ;)

MfG, ich geh mir mal n Kaffee machen :)

Corpsman 24. Jan 2009 08:21

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
mr_emre_d

hat zwar mit dem Abschalten des Cullfacings recht.

Dauerhaft würde ich dir aber davon abraten. Denn das Cullfacing ist eine sehr elegante Methode wie OpenGL relativ Früh entscheiden kann ob Polygone gerendert werden müssen oder nicht. Deaktivierst du diese Eigenschaft kann es unter umständen passieren das deine Framerate merkbar einbricht, je nach dem wie viele Polygone du renderst.

Zum Testen ist es daher OK, aber für dein Fertiges Programm solltest du auf jedenfall wieder das Cullfacing einschalten. Und dann must du natürlich auch die Vertices in Richtiger Reihenfolge übergeben.

mr_emre_d 24. Jan 2009 14:43

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Ich glaube er ist gerade dabei, die Grundlegenden Begriffe / Methoden von OpenGL
zu erlernen - dh zurzeit ist eine Optimierung nicht wichtig, er sollte lieber
sich mal mit der Materie vertraut machen und schon ein paar Resultate sehen

Optimieren kann er nachher eh noch :P

:D

MfG

turboPASCAL 24. Jan 2009 14:50

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Genau eben darum ist es wichtig zu wissen wie etwas funktioniert.
Lernt man es falsch, denkt man später nicht daran es richtig zu machen. :warn:



:P

mr_emre_d 24. Jan 2009 15:12

Re: OpenGL entscheidet willkürlich, ob es zeichnen soll
 
Liste der Anhänge anzeigen (Anzahl: 1)
Später er wird er mehr oder weniger damit konfrontiert - er wird gar nicht ohne können :P:P

PS: Welche Tutorials ziehst du dir gerade rein ?
Ich würde dir die von delphigl.com empfehlen !

EDIT:
Ich habe mal etwas geuppt.
Leider weiß ich den Link dazu nicht, sonst würde ich es verlinken :)

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz