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

Aktuelle Zeit: Mi Mai 29, 2024 00:33

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Wert X vom Fenster links?
BeitragVerfasst: Di Apr 27, 2010 07:38 
Offline
DGL Member

Registriert: Mi Okt 22, 2008 15:47
Beiträge: 14
Gibt es eine Möglichkeit den Wert vom aktuellen sichbaren Fenster abzufragen? Genauer: Ich brauche den aktuellen X-Left vom Fenster.

Aufbau: Benutze eine 2D Ortho Darstellung und verschiebe (glTranslatef) und vergrößere (glScalef) meine "Landschaft". Wie kann ich herausfinden, was gerade angezeigt wird?

Beispiel: Habe einen Panel auf dem ich Render. Habe eine "Landschaft" von z.B. x=1000. Diese wird auf dem Panel angezeigt. Jetzt vergrößere ich mit faktor 2, also wird 0..500 angezeigt. Jetzt verschiebe ich um 200, also wird von 200 bis 700 angezeigt.

Gibt es eine Möglichkeit diese Anzeigegrößen zu holen (Return sollte 200/700 sein)?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wert X vom Fenster links?
BeitragVerfasst: Di Apr 27, 2010 11:44 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
huhu,

ich hoffe mal ich erzähle jetzt keinen Unsinn (selbst Anfänger)...
Aber geht das vielleicht auch mit glGetIntegerv(GL_VIEWPORT, @ Viewport[0]); wie im Beispiel eines Hintergrundquads?

Ich hoffe ich habe die Frage richtig verstanden.

In der Wiki heisst es dazu ja auch das es mit dem Ausgabefenster zusammenhängt.
http://wiki.delphigl.com/index.php/Viewport


[pascal]
Code:

procedure DrawBackground;
var Viewport: TVector4i;
begin
  glGetIntegerv(GL_VIEWPORT, @Viewport[0]);       //ViewPort speichern
 
  glMatrixMode(GL_PROJECTION);                    //in die ProjektionsMatrix
  glPushMatrix;                                   //Matrix speichern
  glLoadIdentity;                                 //Matrix zurücksetzen
  glOrtho(0, Viewport[2], Viewport[3], 0, 0, 10); //2D-Sicht festlegen (mit Viewport als Grenzen)
 
  glMatrixMode(GL_MODELVIEW);                     //in die ModelMatrix
  glPushMatrix;                                   //Matrix speichern
  glLoadIdentity;                                 //Matrix zurücksetzen
 
  glBegin(GL_QUADS);                              //Hintergrund Zeichnen
    glColor3f(1,0,0); glVertex2f(          0,           0);
    glColor3f(0,1,0); glVertex2f(          0, ViewPort[3]);
    glColor3f(0,0,1); glVertex2f(ViewPort[2], ViewPort[3]);
    glColor3f(1,1,0); glVertex2f(ViewPort[2],           0);
  glEnd;
 
  glMatrixMode(GL_PROJECTION);                    //in die ProjektionsMatrix
  glPopMatrix;                                    //alte Matrix wieder laden
 
  glMatrixMode(GL_MODELVIEW);                     //in die ModelMatrix
  glPopMatrix;                                    //alte Matrix wieder laden
 
  glClear(GL_DEPTH_BUFFER_BIT);                   //Tiefenbuffer löschen
end;


[/pascal]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wert X vom Fenster links?
BeitragVerfasst: Di Apr 27, 2010 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

@Wölfchen: Nein, das geht nich. Der Vieport gibt nur an in welchem bereich gerendert wird. Der änder sich bei einer Translation nicht.
@MASU: Dazu könntest du dir mit glGet die ModelViewMatrix auslesen. Da stehen die aktuellen Translationen und Rotationen drin:
Code:
var Matrix: array[0..3, 0..3] of glFloat;
glGetFloatv(GL_MODELVIEW_MATRIX, @Matrix[0,0]);

Die Matrix ist folgender Maßen aufgebaut:
Code:
[r1   u1   l1   px]
[r2   u2   l2   py]
[r3   u3   l3   pz]
[ 0    0    0    1]

wobei px, py, pz deine Aktuelle Translation in X-, Y- und Z-Richtung ist...

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wert X vom Fenster links?
BeitragVerfasst: Di Apr 27, 2010 12:46 
Offline
DGL Member

Registriert: Mi Okt 22, 2008 15:47
Beiträge: 14
Au prima, Hilft schon, da ich nur die linke X Seite brauche für die aktuelle Cursor position (plus panel pixel) in der "Landschaft".


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 » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.032s | 15 Queries | GZIP : On ]