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

Aktuelle Zeit: Fr Jul 18, 2025 08:57

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Sep 04, 2008 11:37 
Offline
DGL Member

Registriert: Do Sep 04, 2008 11:03
Beiträge: 2
Hallo Leute,
mein erster Post bei Euch, vielleicht könnt Ihr mir ja helfen :).

Im Moment habe ich ein kleines Verstädnisproblem, was die Umwandlung von NDC-Koordinaten in Screen-Koordinaten betrifft.
Am besten gleich mal ein Beispiel:

Angenommen es gilt z.B. folgende Viewport-Einstellung:
Code:
  1.  
  2. glViewport(0,0,640,480)
  3.  


Im Folgenden gehe ich nur von der NDC-X-Koordinate aus:
Es ist bekannt, dass der Wert im Bereich [-1...1] liegt.

Zur Umrechnung der X-Koordinate kann man nun die Formel (siehe: http://www.opengl.org/sdk/docs/man/xhtml/glViewport.xml):
Code:
  1.  
  2. xw = (xnd + 1) * (Width / 2) + X
  3.  

verwenden.

Nun meine Frage: Wenn man von den beiden Extremwerten für xnd ausgeht (-1 und 1), würde folgendes gelten:
Code:
  1.  
  2. i.)  xw = (-1 + 1) * (Width / 2) + X = 0 * (320) + 0 = 0
  3. ii.) xw =  (1 + 1) * (Width / 2) + X = 2 * (320) + 0 = 640.
  4.  


Der erste Fall ist klar, doch der zweite gibt mir zu denken. Denn normalerweise kann xw doch unter den gegebenen Viewport-Einstellungen maximal nur 639 betragen und nicht 640.

Das Problem könnte man zwar leicht beheben, indem man die Formel geringfügig anpasst:
Code:
  1.  
  2. xw = (xnd + 1) * ((Width-1) / 2) + X.
  3.  


Dennoch wollte ich mal Eure Meinung einfahren, vielleicht habe ich an einer anderen Stelle einen Denkfehler! :)

MfG,
bkp


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 05, 2008 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn dein Viewport 640 Pixel breit ist, hast du nur Werte von 0 bis 639 inklusive. Sonst hättest du ja 641 Pixel breite, weil die 0 ja mitgezählt wird.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 05, 2008 19:33 
Offline
DGL Member

Registriert: Do Sep 04, 2008 11:03
Beiträge: 2
Hey,
danke für die Antwort.

Allerdings kann ich damit nicht viel anfangen, denn das was du sagst ist mir natürlich bewusst :wink:.
Es geht mir darum wie und warum die Formel 640 statt 639 ausspuckt.

Natürlich weiß ich, dass x maximal 639 sein kann (das sagte ich in dem ersten Post ja bereits), aber ich habe ja vorgerechnet was passiert, setzt man für xnd = 1 und für die Breite = 640 in die Formel ein.

Sollte ich nicht genau verstanden haben, worauf du hinaus willst, wäre es nett wenn du das noch näher erläutern würdest. :)

MfG,
bkp


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 05, 2008 20:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ähhh, ja, da habe ich mich wohl verlesen. Ich dachte, die Formel würde genau anders herum arbeiten... So gesehen ist das natürlich eine Interessante Frage...

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] 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 | 15 Queries | GZIP : On ]