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

Aktuelle Zeit: Sa Jul 05, 2025 13:44

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rechteck statt Quadrat
BeitragVerfasst: Do Aug 28, 2008 12:44 
Offline
DGL Member

Registriert: Fr Dez 28, 2007 20:24
Beiträge: 62
Wohnort: Berlin
Ich habe das Problem, dass ein eigentliches Quadrat immer wie ein Rechteck aussieht. Ich bin mir eigentlich sicher, dass ich nicht der erste bin den das stört, allerdings habe aber in der suche nichts brauchbares gefunden ( falsche Suchkriterien??) .

Hier mal der relevante Quelltext:

Code:
  1.  
  2. Procedure TRender.IdleHandler(Sender: TObject; var done: Boolean);
  3. begin
  4.  glClear(GL_COLOR_BUFFER_BIT);
  5.  glMatrixMode(GL_PROJECTION);
  6.  
  7.  glViewport(0,0,Client.Clientwidth,Client.ClientHeight);
  8.  glLoadIdentity;
  9.  
  10.  gluPerspective(0, CLient.ClientWidth/Client.ClientHeight, NearClipping, FarClipping);
  11.  glMatrixMode(GL_MODELVIEW);
  12.  glLoadIdentity;
  13.  
  14.  Render;
  15.  
  16.  SwapBuffers(DC);
  17.  done := False;
  18. end;
  19.  
  20. Procedure TRender.Render;
  21. begin
  22.  
  23.  TextureManager.BindTexture('cursor');
  24.  glBegin(GL_Quads);
  25.  
  26.   glTexCoord2f(0,0);
  27.    glvertex2f(MousePos.x-0.02,MousePos.y-0.02);
  28.  
  29.   glTexCoord2f(1,0);
  30.    glvertex2f(MousePos.x+0.02,MousePos.y-0.02);
  31.  
  32.   glTexCoord2f(1,1);
  33.    glvertex2f(MousePos.x+0.02,MousePos.y+0.02);
  34.  
  35.   glTexCoord2f(0,1);
  36.    glvertex2f(MousePos.x-0.02,MousePos.y+0.02);
  37.  
  38.  glEnd;
  39.  
  40. end;
  41.  



Danke für eure Hilfe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 28, 2008 12:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
DU musst dein FOVy entsprechend des Viewportaspektratios anpassen damit dein Quadrat auch quadratisch aussieht. Ich seh dass du da ja 0° drin hast, was eigentlich ungültig ist.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 28, 2008 13:17 
Offline
DGL Member

Registriert: Fr Dez 28, 2007 20:24
Beiträge: 62
Wohnort: Berlin
Aber mehr als 0 und mein Quadrat wird nicht mehr angezeigt :(

edit quatsch ich hab im perspektiv gemeint. Ok im viewport was ist da nen vernünfitger wert?


edit2 das hab ich vergessen zu erwähnen, es soll 2D bleiben, deswegen is der Viewport bei den beidne werten 0, wie im tutorial.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 28, 2008 13:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du 2D willst dann ist gluPerspective ja eh falsch. Du brauchst dann gluOrtho für eine orthogonale Projektion.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 28, 2008 13:49 
Offline
DGL Member

Registriert: Fr Dez 28, 2007 20:24
Beiträge: 62
Wohnort: Berlin
Code:
  1.  
  2.  
  3. Procedure TRender.IdleHandler(Sender: TObject; var done: Boolean);
  4. begin
  5.  glClear(GL_COLOR_BUFFER_BIT);
  6.  glMatrixMode(GL_PROJECTION);
  7.  
  8.  glLoadIdentity;
  9.  
  10.  glViewport(0,0,Client.Clientwidth,Client.ClientHeight);
  11.  glOrtho(0,Client.ClientWidth,0,Client.ClientHeight,0,128);
  12.  
  13.  glloadIdentity; // Ohne das ist nichts zu sehen
  14.  
  15.  Render;
  16.  
  17.  SwapBuffers(DC);
  18.  done := False;
  19. end;
  20.  
  21.  


So habe ich das jetzt aber ohne das loadIdentity wird die Scene nicht angezeigt und mit dem wird immernoch nen Rechteck gezeichnet :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 28, 2008 15:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
erm... Warum löschst du deine Projektionsmatrix wieder, nachdem du sie eingerichtet hast?
Das nichts zu sehen ist, verwundert mich nicht weiter, denn schließlich ist es bei glOrtho so, dass eine OpenGL-Einheit gleich einem Pixel ist (normalerweise). Deshalb solltest du erstmal dein Quad dementsprechend anpassen. Danach schmeißt du das glLoadIdentity nach dem glOrtho raus und fügst einen Befehl zum zurückschalten in die Modelviewmatrix ein.

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: Do Aug 28, 2008 19:25 
Offline
DGL Member

Registriert: Fr Dez 28, 2007 20:24
Beiträge: 62
Wohnort: Berlin
Und was heisst das, das Quad anpassen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 28, 2008 19:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nun, da jetzt eine OpenGL einheit gleich ein Pixel ist, kannst du natürlich nicht mehr mit 0.02 arbeiten. Das wären dann insgesamt 0.04 Pixel, daher siehst du herzlich wenig. Je nach dem, wie groß dein Cursor ist, wäre vielleicht ein wert von 16 oder so angebracht. Probiers mal ;)

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: Do Aug 28, 2008 19:30 
Offline
DGL Member

Registriert: Fr Dez 28, 2007 20:24
Beiträge: 62
Wohnort: Berlin
Aaah ok, danke!

Ich wusste nicht wie du das meintest mit eine OpenGL einheit...

Jetzt geht es :)


Das ich das Quad nie gesehen habe liegt auch daran das durch das GLOrtho meine umrechnung von Mousepos etwas falsch ;) war...


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 12 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.009s | 17 Queries | GZIP : On ]