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

Aktuelle Zeit: So Jul 20, 2025 21:23

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Okt 10, 2004 19:05 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 10, 2004 18:55
Beiträge: 6
Hallo,

ich habe wieder angefangen mit OpenGL zu arbeiten und habe dazu ein Frage (2D).
Ich sehe da bei zFar, zNear und glTranslate nicht so ganz durch.

Meine Objekte werden nicht dargestellt.

Da am Anfang mein Fenster eh verändert wird, kommt glOrtho in glResizeWnd:
Code:
  1.  
  2. procedure glResizeWnd(Width, Height: Integer);
  3. begin
  4.   glMatrixMode(GL_PROJECTION);
  5.   glLoadIdentity();
  6.  
  7.   glOrtho(0, Width, Height, 0, 0, 0); // <-- Was wären optimale Werte?
  8.  
  9.   glMatrixMode(GL_MODELVIEW);
  10.   glLoadIdentity();
  11. end;
  12.  


Jetzt zeichne ich ein paar Quads:
Code:
  1.  
  2. procedure glDraw;
  3. var
  4.   X: Integer;
  5.   Y: Integer;
  6. begin
  7.   glClearColor(0, 0, 0, 0);
  8.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  9.  
  10.   glLoadIdentity;
  11.   glTranslate(0.0, 0.0, -15.0);
  12.   // wie kann ich -15 von Anfang an als Standard für alle Objekte setzen?
  13.  
  14.   glBindTexture(GL_TEXTURE_2D, MyTexture);
  15.  
  16.   for X := 0 to 3 do
  17.     for Y := 0 to 3 do
  18.       DrawQuad(1 * X, 1 * Y, 0, 2, 2);
  19. end;
  20.  


Was wäre optimale Werte für zFar und zNear? Erst wenn ich für beide -100 setze, kriege ich etwas zu sehen. Wenn ich dann noch Z bei glTranslate auf -15 setze, ist wieder alles schwarz. Wie kann ich die -15 von Anfang an als Standard für alle Objekte setzen (so das es bei glTranslate 0 ist)?

Danke schon einmal.

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 10, 2004 20:27 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
wenn du den orthoModus verwendest, dann normalerweise um etwas in 2D zu zeichnen..
.zFar sollte 1 und zNear sollte -1 sein...
dann solltest du aber auch die Z-Komponente immer 0 sein lassen und auch nicht in diese Richtung transformieren :-)

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 10, 2004 20:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
zFar sollte immer größer als zNear sein, aber niemals darf zFar = zNear sein. zFar..zNear ist ein Bereich, und (grob gesagt) werden nur Objekte dargestellt die sich in diesem Bereich befinden, alles andere wird durch die mit zFar und zNear beschriebenen Schnittflächen abgeschnitten. Im Ortho-Modus sind die Werte recht schnuppe (-1/1 benutze ich immer), im perspektivischen Modus sollte man die so wählen dass die Auflösung des Z-Puffers möglichst gut ausgenutzt wird.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 10, 2004 20:39 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 10, 2004 18:55
Beiträge: 6
Danke erst einmal.
Also, habe jetzt:
Code:
  1.  
  2.   glOrtho(0, Width, 0, Height, -1, 1);
  3.  

Und mein Quad wird auch angezeigt - aber: es ist winzig. So winzig, dass ich es bei ersten mal gar nicht gesehen habe.

Ich habe es mit
Zitat:
glTranslate(10.0, 10.0, 0.0);

mal etwas verschoben, dass ich die 3 Pixel nicht in der unteren linken Ecke suchen muss.
Nun dachte ich mir, dass ich mit glTranslate das Quad etwas näher rankriegen könnte, klappt aber nicht.

Wie kriege ich jetzt mein Quad näher vor die Linse?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 10, 2004 20:42 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
zeig mal die zeichenroutine deines Quads?
du musst bedenken, dass du im Orthomodus den Vorteil (in deinem Fall hat es wohl eher für einen "Nachteil" gesorgt), dass du die genaue Pixelanzahl angeben kannst beim zeichnen...
es sind also keine Weltkoordinaten, sondern Pixel, die du zeichnen kannst...
-> einfach die werte des quads vergrößern...
ansonsten wäre auch glScale eher das was du suchst, wie glTranslate ^^

_________________
. . .


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 10, 2004 20:47 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 10, 2004 18:55
Beiträge: 6
Fiji-Fighter hat geschrieben:
zeig mal die zeichenroutine deines Quads?
du musst bedenken, dass du im Orthomodus den Vorteil (in deinem Fall hat es wohl eher für einen "Nachteil" gesorgt), dass du die genaue Pixelanzahl angeben kannst beim zeichnen...
es sind also keine Weltkoordinaten, sondern Pixel, die du zeichnen kannst...
-> einfach die werte des quads vergrößern...
ansonsten wäre auch glScale eher das was du suchst, wie glTranslate ^^

Hey, da hatte ich wohl eine richtige Wissenslücke. Das erklärt Einiges.
Thanks a lot.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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.011s | 16 Queries | GZIP : On ]