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

Aktuelle Zeit: Mo Jul 14, 2025 13:03

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Positionsangabe im Orthomodus
BeitragVerfasst: Di Sep 23, 2003 10:16 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
heute mal eine meiner Meinung nach EIGENTLICH (*g*) leichte Frage von mir:
ich benutze den Orthomodus:
Code:
  1. procedure Tform1.FormResize(Sender: TObject);
  2. begin
  3.  glMatrixMode(GL_PROJECTION);
  4.   glLoadIdentity;
  5.   gluOrtho2d(0,Width, 0,Height);
  6.   glMatrixMode(GL_MODELVIEW);
  7.   glLoadIdentity;
  8.   glEnable(GL_TEXTURE_2D);
  9.   glDisable(GL_DEPTH_TEST);
  10. end; (*FormResize*)


beim rendern zeige ich ein texturiertes Quad am oberen Bildschirmrand über die gesamte Breite an...
beim verändern der Größe des Fensters bleibt dieses jedoch nicht am oberen Rand, sondern behält seine alte Position und Größe bei, obwohl sich width und height verändern :/
stehe momentan irgendwie aufm Schlauch :(
Code:
  1.  glBindTexture(GL_TEXTURE_2D,myCoolTexture);
  2.  glBegin(GL_QUADS);
  3.   glcolor4f(1,1,1,1);
  4.    glTexCoord2f(0,0);
  5.    glVertex2f(0,height*4/5);
  6.    glTexCoord2f(0,1);
  7.    glVertex2f(0,height);
  8.    glTexCoord2f(1,1);
  9.    glVertex2f(width,height);
  10.    glTexCoord2f(1,0);
  11.    glVertex2f(width,height*4/5);
  12.  glEnd;
  13.  


thx schonmal

Fiji-Fighter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 11:13 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ganz dumme Frage: Du verwendest das Height und Width des Forms und nicht irgendwelche globalen Variablen, die nicht mit aktualisiert werden? Auch philosophiere ich momentan ne wenig über den Ausdruck height*5/4 O_o Kann auch daran liegen, dass der Kaffee alle ist O_o

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 11:39 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Du musst auch sicher stellen, dass nach dem Ändern der Fenstergröße der Inhalt auch tatsächlich neu gezeichnet wird.
Das ist, wenn du's nicht "händisch" machst, nur dann der Fall, wenn deine Zeichenroutine bei der WM_PAINT Message aufgerufen wird (oder bei OnPaint eines Formulars) - aus deinem Post geht leider nicht hervor, wann du die Szene zeichnest

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 12:21 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
ich zeichne die Szene in Application.onidle ... daran kann es also eigentlich nicht liegen...

die Variablen Height und width werden auch verändert (wenn man einen Haltepunkt in der Zeichenroutine setzt wirde dieser auch umgehend angesprungen und der height/width wert sind entsprechend der Formgröße... -> Werte werden geändert und es wird auch gezeichnet...)
:(

es ist als ob er die alten Werte benutzen würde, obwohl schon neuere vorliegen :/

EDIT: @Phobeus: das ist ein 4/5 und kein 5/4 ;) ...
...und das funktioniert auch ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 13:03 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Ja, nur... was soll da bewirken? Dachte es soll über die ganze Fläche gelegt sein? Haben wir also ne Screen von 800 so kommt bei mir 1000 draus und das macht für mich überhaupt keinen Sinn... was soll damit bezweckt werden?

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 13:15 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
das hier:
(links das normale, rechts das vergrößerte Fenster
Bild

ich hoffe, dass wenigstens der Fehler jetzt klar ist :/

die Textur soll sich mit dem Fenster vergrößern/verkleinern -> immer am oberen Bildschirmrand über die volle breite sein...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 13:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zwei Dinge die man in Sachen orthagonale Projektion unter OpenGL tun sollte :

1. Nutze glOrtho statt gluOrtho2d.
2. Aufgrund des OpenGL-Koordinatensystems liegt die Position 0/0 nicht oben-links, sondern unten-links.Evtl. liegt dein Fehler nämlich genau da!

P.S. : Wenn die Textur immer die gleiche Größe und Position beibehalten soll, dann solltest du im Ortho-Modus mit absoluten Werten arbeiten.Also statt width und height feste Variablen nehmen.Setz deinen Ortho doch einfach auf 800x600, und wenn du dann dein Quad mit absoluten Werten zeichnest, wirds je nach Fenstergröße angepasst.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 14:02 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
das mit dem Koordinatensystem ist mir schon klar/ hatte ich schon herausgefunden und ein Wechsel auf GLOrtho (warum überhaupt?) hat auch nichts gebracht...

das komische ist, dass für die Größe, die ich in Delphi für das VCL-Fenster einstelle am Anfang immer die Textur in der richtigen Größe und Position gezeichnet wird...
wenn ich aber eine kleinere Startgröße habe ,und dann das Fenster vergrößere ändert sich nichts...

es ist so, als ob sich die Koordinaten nicht ändern würden, das tun sie aber, wenn man einen Brakepunkt setzt...

P.S. irgendwie klapppt das mit dem Hochladen nicht...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 14:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hast dus auch mal wie ich vorgeschlagen hab mit absoluten Koordinaten gemacht?Wenn du deinen Orthomodus immer an die Fenstergröße anpasst, ists klar des es nicht so klappt wie du willst.Machs mal so :

Code:
  1. glOrtho(0,800,600,0,-1,1);
  2. ...
  3. glTexCoord2f(0,1); glVertex3f(0,0,0;
  4. glTexCoord2f(1,1); glVertex3f(Quad.Width, 0,0);
  5. glTexCoord2f(1,0); glVertex3f(Quad.Width, Quad.Height,0);
  6. glTexCoord2f(0,0); glVertex3f(0, Quad.Height, 0);
  7.  


So bleiben alle deine Größen unabhängig von deiner Fenstergröße erhalten, und dein Quad wird automatisch daran angepasst.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 23, 2003 16:47 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Jan 04, 2003 21:23
Beiträge: 674
Wohnort: Köln
noch immer das gleiche Problem wie zuvor :((
ich glaube ich stelle das ganze mal ein paar Tage zurück...
dann wird es schon klappen ;)


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


Wer ist online?

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