AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi OpenGL entscheidet willkürlich, ob es zeichnen soll
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL entscheidet willkürlich, ob es zeichnen soll

Ein Thema von bianfable · begonnen am 23. Jan 2009 · letzter Beitrag vom 24. Jan 2009
Antwort Antwort
bianfable

Registriert seit: 20. Nov 2007
23 Beiträge
 
#1

OpenGL entscheidet willkürlich, ob es zeichnen soll

  Alt 23. Jan 2009, 11:42
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;
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

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

  Alt 23. Jan 2009, 12:06
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;
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

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

  Alt 23. Jan 2009, 13:29
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
bianfable

Registriert seit: 20. Nov 2007
23 Beiträge
 
#4

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

  Alt 23. Jan 2009, 13:44
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!
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#5

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

  Alt 24. Jan 2009, 03:42
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
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

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

  Alt 24. Jan 2009, 08:21
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.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#7

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

  Alt 24. Jan 2009, 14:43
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



MfG
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

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

  Alt 24. Jan 2009, 14:50
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.



Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#9

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

  Alt 24. Jan 2009, 15:12
Später er wird er mehr oder weniger damit konfrontiert - er wird gar nicht ohne können

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
Angehängte Dateien
Dateityp: zip dgl_240.zip (2,36 MB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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