ich bin derzeit dabei meinen 2D Map-Editor von DirectDraw auf OpenGL umzustellen. Meine Testings haben ergeben das OGL um einiges schneller ist als DirectDraw, ausserdem hat es schöne features wie Alpha-Blending usw, darum möchte ich lieber OGL nutzen
Ein Problem was ich dabei festgestellt habe, ist das die Scene zirka 20 Pixel zu hoch ist. Wenn ich ein Quad an XY=0,0 rendere, ist das Quad 20 Pixel zu weit oben, als wäre es an XY=0,-20. Wobei sich die 20 Pixel auf die Höhe der Titelleiste von den Fenster beziehen. Ich kann zwar die Position mittels glOrtho an die richtige Position setzten, aber da die Titelleiste unter z.B. Win2k und WinXP (mit Theme) unterschiedliche Höhen hat, ist das Ergebnis nicht zufriedenstellend.
Wenn ich den BorderStyle vom Formular auf bsNone stelle, ist es so wie ich es wünsche. Nur möchte ich die Titelleiste schon noch haben.
Hat jemand eine Idee wie ich das Problem lösen kann?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich tippe mal darauf dass du ohne API rendertst? Denn wenn du es via VCL machst, bekommst du mit Rect(0,0,ClientWidth,ClientHeight) genau den Bereich im Rand des Fensters, und musst dich nicht um die Ausmaße der Ränder bzw. der Titelleiste kümmern. Für die API gibts AFAIK auch einen passenden Befehl mit dem man die Clientarea ermitteln kann, aber den Namen der Funktion hab ich leider nicht parat.
Registriert: Sa Jan 04, 2003 21:23 Beiträge: 674 Wohnort: Köln
na, danns chau dir mal die onResize-Methode an wenn du sie so abänderst (wie vermutet fälschlicherweise ein Height anstatt Clientheight), dann funktioniert es:
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.