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

Aktuelle Zeit: Fr Jul 18, 2025 12:35

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Aug 09, 2008 10:19 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Hallo, ich sitze gerade an einem eigenartigen Problem.
Ich habe eine 2D Kameraklasse. Diese Kamera hat in meiner Welt eine Position, eine Breite, eine Höhe und einen Bereich (TRect) den sie abdecken darf.
Soweit sogut ;) Das Ganze funktioniert wunderbar.
Wenn ich jetzt aber folgendes tue:
Code:
  1.   if key = vk_right then
  2.     camera.target := to_v2f(camera.Target.x + 16, camera.Target.y);

wird zwar die Position der Kamera um 16 Pixel verschoben. Das Bild allerdings um 32 Pixel. Das macht mich völlig wahnsinnig \";)\"

Hier mal ein wenig Code:
OnIdle:
Code:
  1. procedure TForm1.IdleHandler(Sender: TObject; var Done: Boolean);
  2. begin
  3.   MTimer.Update;
  4.   glClear(GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT);
  5.   Init2D;
  6.   glPushMatrix;
  7.     Camera.Update(MTimer.Timestep);
  8.     Map.Render(Camera.Position, Camera.Width, Camera.Height);
  9.   glPopMatrix;
  10.   DrawText;
  11.   caption := floattostr(camera.Position.x) + '; ' + floattostr(camera.position.y);
  12.   CheckError;
  13.   Swapbuffers(DC);
  14.   FPSCounter.Update;
  15.   Done := false;
  16. end;

Wenn die Kamera sich an der Stelle (clientwidth / 2, clientheight / 2) befindet soll der Ursprung links oben liegen, was soweit auch zu funktionieren scheint, allerdings bereitet mir der Rest Probleme ;) An Position 480 z.B. befindet sie sich da wo sie erst bei Position 640 (Bildschirmbreite) sein sollte

Vielen Dank schonmal,
mfg


Zuletzt geändert von Seth am Sa Aug 09, 2008 13:40, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 09, 2008 11:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Irgendwo vielleicht ein glScaleF(2.0, 2.0, 2.0)?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 09, 2008 11:56 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Leider nein ;) Es wird ja auch alles in der korrekten Größe dargestellt.

€: Es lag an der Funktion zum Zeichnen der Map, ein "Back To The Drawing Board" ergab, dass da viel zu viele unnötige Rechnungen drin waren.
Zettel und Schreiber werden wohl selbst bei Programmierern doch niemals durch Computer ersetzt ;)

mfg


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder 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.007s | 15 Queries | GZIP : On ]