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

Aktuelle Zeit: Di Jul 08, 2025 18:18

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Positonsangabe von Punkten...
BeitragVerfasst: Mo Mär 26, 2007 01:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Hallo Leute,

nach langen lese ich mir wieder die Tutorials im Wiki durch (goßes Lob an Euch alle) und alles (bis jetzt jedenfalls) klingt für mich logisch und ist auch gut erklärt. Nur mit den Positionsangaben komme ich nicht zurecht.

Lektion 4
http://wiki.delphigl.com/index.php/Tutorial_Lektion_4

Ich habe mir den Quellcode von Lektion 4 in der File-Area bei Euch runtergeladen (project lesson4_1_api.dpr) und in der GlDraw Procedure im Abschnitt wo die Koordianten eines Vertex mittels glVertex3f angegeben werden habe ich kleine Probleme dies zu Verstehen - kann auch an der Uhrzeit liegen.

Also hier steht...

Code:
  1. {------------------------------------------------------------------}
  2. {  Zeichnen der Szene                                              }
  3. {------------------------------------------------------------------}
  4. procedure glDraw;
  5. begin
  6.    glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
  7.  
  8.     glLoadIdentity;
  9.     gltranslate(0,0,-5);
  10.  
  11.     glBindTexture(GL_TEXTURE_2D,tex);
  12.  
  13.     glBegin(GL_QUADS);
  14.         glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  15.         glTexCoord2f(0,1); glVertex3f(-1,1,0);
  16.         glTexCoord2f(1,1); glVertex3f(1,1,0);
  17.         glTexCoord2f(1,0); glVertex3f(1,-1,0);
  18.     glEnd;
  19. end;
  20.  


Es wird ein Quad gezeichnet beginnend mit den Punkten links unten, links oben, rechts oben und rechts unten.

Das Fenster ist 800x600 Pixel aber die Größenangaben verstehe ich nicht ganz...

Der "Zeichenstift" liegt in der Mitte des Fensters schon klar... aber bei "-1" auf der X-Achse sieht es aus als sei der Punkt 50 Pixel (mehr oder weniger) vom Ausgangspunkt gesetzt. Ja warum wird das nicht in Pixel angegeben wo ich das Quad haben will sondern in dieser Maßeinheit?

Was ist diese Maßeinheit ?
Sind die "-1" jetzt -100 Pixel oder wie kann man das verstehen?

Als ich den ersten Vertex - glVertex3f(-3,-1,0) setzte, ist die untere linke Ecke vom Quad ein Stückchen ausserhalb des Sichtbereiches des Fenster geraten.

Was müsste man dann aufrufen wenn man das Quad zum Beispiel am linken Fensterrand anzeigen lassen will (ich weiß OpenGl beginn unten links mit X0/Y0)?

Wie Was Wo Weshalb Warum??


Danke im voraus !

PS: Wo sind eigentlich die Downloads von Sascha's 2D Tutorial (Beispielcodes) hin? Auf seiner Seite nach seinem re-design jedenfalls nicht :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 26, 2007 10:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hi,
dein Verständnisproblem liegt in der Perspektive.

Zitat:
Was ist diese Maßeinheit ?
Sind die "-1" jetzt -100 Pixel oder wie kann man das verstehen?


Nein, die Maßeinheiten sind OpenGL Einheiten.
Man kann diese völlig frei mit eigenen Maßstäben gleichsetzen (zB.: 1 Meter = 1 OGL-Einheit).

Du hast deine Perspektive-Matrix (wahrscheinlich) so initialisiert.
Code:
  1. glViewport(0, 0, 800, 600);
  2. glMatrixMode(GL_PROJECTION);                         <-- diese Zeilen
  3. glLoadIdentity;                                      <--
  4. gluPerspective(45, 800/600, CLIP_NEAR, CLIP_FAR);    <--
  5. glMatrixMode(GL_MODELVIEW);
  6. glLoadIdentity;


Wenn du eine Pixelgenaue Perspektive haben möchtest solltest du den Ortho-Modus verwenden:
Code:
  1. glViewport(0, 0, 800, 600);
  2. glMatrixMode(GL_PROJECTION);
  3. glloadIdentity;
  4. glOrtho(0, 800, 0, 600, 0, 100);
  5. glMatrixMode(GL_MODELVIEW);
  6. glLoadIdentity;


Zitat:
Was müsste man dann aufrufen wenn man das Quad zum Beispiel am linken Fensterrand anzeigen lassen will (ich weiß OpenGl beginn unten links mit X0/Y0)?

Jetzt kannst du ein Quad zeichnen, was links-unten am Fenster-Rand (ViewPort-Rand) beginnt und z.B. 300x200 Pixel groß ist:
Code:
  1. glBegin(GL_QUADS);
  2.   glTexCoord2f(0,0); glVertex3f(  0,   0, -1);
  3.   glTexCoord2f(1,0); glVertex3f(300,   0, -1);
  4.   glTexCoord2f(1,1); glVertex3f(300, 200, -1);
  5.   glTexCoord2f(0,1); glVertex3f(  0, 200, -1);
  6. glEnd;


Ich hoffe ich konnte dir ein wenig weiterhelfen :wink:

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 26, 2007 22:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mai 27, 2004 15:22
Beiträge: 25
Wohnort: Stuttgart
Hallo !

Ja dank Dir konntest mir weiterhelfen... Hab auch heute ein (fast) gleiches Posting im Forum hier gefunden.
Ich sollte vorher mal die Augen auf machen ;-)


mfg
Thomas


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.009s | 14 Queries | GZIP : On ]