Registriert: Fr Jul 14, 2006 13:08 Beiträge: 117 Wohnort: Berlin
hi Lossy Ex
Zitat:
uweq hat folgendes geschrieben:
Zitat:
OpenGl12.pas - das dies nicht die neuste ist, hab ich schon fast vermutet, nur eben halt nix wie OpenGL15 oä.pas gefunden. Na nun weiss ich welche ich nehmen kann, und die Arbeit des Umschreibens meines Sources werd ich dann einfach mal auf mich nehmen.
..das ist auch schon geschehen, zumindest bei dem Source der geschrieben ist bisher, aber mal sehn was da noch kommt.
Auch die FMod stesste dann rum. - auch erledigt. Neue drauf !
Deine "Schleichwerbung" ist mir im in Deiner vorigen Antwort schon nicht entgangen, nur versteh ich davon momentan nicht viel, aber angeschaut hab ich mir das und auch nicht vergessen, irgendwann greif ich bestimmt drauf zurück
...und Kiddys, naja Da weist selbst welche Alterstufe damit gemeint war. Das andere sind eben halt "spielende Erwachsene" wenn ich das mal so formulieren darf.
Tja und warum ich die 2005er DGLSDK drauf hatte weiss ich nicht, hab das auch gleich auf die 2006.1 umgeändert, und somit das unterverzeichnis "Fremdunits" ins Nirvana geschickt. Nun steht die aktuelle Version in meinem Bibliothekspfad, und ich bin damit dann auf dem neusten Stand. (zumindest bilde ich mir das mal ein )
gruß Uwe
_________________ Die 3 Totfeinde eines Programmierers ? a) Tageslicht b) frische Luft c) ..und das ständige Gebrüll der Vögel
Registriert: Fr Jul 14, 2006 13:08 Beiträge: 117 Wohnort: Berlin
hi Lossy Ex,
Zu meinem Dritten Problem mit dem kleinen Strich beim Bewegen der Ringe;
Es ist weg !!!
und hier mal was ich gemacht hab:
Code:
{...}
// In den orthognalen (2D-)Modus wechseln und Menü zeichnen
glDisable( GL_DEPTH_TEST );
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho(0,800,600,0,-2,2);// <<<----
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
{...}
Also erscheint auf meinem Moni ein 800x600px grosses Bild ( siehe "<<<==" im Source)
mein Moni ist aber 1280 x 768 eingestellt. Das Ergebnis ist, wenn ich das Spiel starte muss ich immer erst die am Rande rechts "weggerutschte" Maus nach Links bewegen, bis ich dann mal irgendwann das Ding sehen kann. Das störte mich so ungemein, dass ich das Abändern musste.
Bevor ich nun die Screen-Auflösung ändere, fast niemand findet es schön wenn wiedermal alle Icons durcheinander sind auf dem Desktop nach Spielende, hab ich also das Spiel und dessen Berechnungen, an die Screen-Auflösung automatisch angepasst.
also
Code:
glOrtho(0, Screen.Width, Screen.Height,0,-2,2);
und nun ist der kleine optische Fehler weg.
1 Vorteil - 1 Nachteil !
Vorteil war , daß ich meine automatische Berechnung für das OnMouseMouve schon fertig hatte und die Daten dann in einem array of TRect mit "schleppe"
Nachteil war, ich musste innerhalb der Berchnungszyklen für die Menüpositionierung immernoch den Scalierungsfaktor einbauen, damit die Optik des Spiels bei jeder Auflösung gleich bleibt. (hatte ich doch die ganze Zeit mit 800x600 entwickelt )
das hab ich dann einfach so gemacht:
Code:
procedure TfrmSokoban.FormCreate(Sender:TObject);
begin
FScaleWidth := Screen.Width/800;// Anpassung, da für 800x600 entwickelt
FScaleHeight := Screen.Height/600;// Anpassung, da für 800x600 entwickelt
{...}
..und gut ist
gruß und Dir/Euch nochmal vielen Dank
Uwe
PS: und Du hattest Recht , daß bei 3 Fragen der Thread doch schnell mal zu Umfangreich werden kann.
_________________ Die 3 Totfeinde eines Programmierers ? a) Tageslicht b) frische Luft c) ..und das ständige Gebrüll der Vögel
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Zitat:
spielende Erwachsene
He He. Sehr gute Formulierung.
Zur Auflösung. Es freut mich, dass du selber gefunden hast wo das Problem lag. Aber ich wäre nicht ich wenn ich dazu nicht auch noch Senf abgeben könnte.
Zum Verständniss. Das glOrtho stellt keine Auflösung ein sondern lediglich die Skalierung der Daten. Die Pixel im Windows (Fenster) bleiben unverändert. Man kann es damit also Realisieren, dass 1 Pixel auf dem Bildschirm genau eine Einheit in OpenGL darstellt. Also pixelgenaue Darstellung. Man kann es aber auch so realisieren, dass 2 Pixel eine Einheit sind oder sonstige krumme Werte. Und dann muss OpenGL die Ausgabe filtern und das hat bei dir in dem Moment manchmal zu einem schwarzen Stich geführt. Ich persönlich bevorzuge zu 99% immer die pixelgenaue Darstellung. Also das benutzt du ja jetzt auch.
Habe auch noch eine Alternative für dich. Damit würde lästiges umrechnen der Korrdinaten entfallen und du könntest Problemlos mit 800x600 in glOrtho arbeiten. Da deine Anwendung im Vollbildmodus läuft kannst du ja auch einfach die Auflösung ändern. Das geht folgendermaßen.
MessageBox(0,'Konnte Vollbildmodus nicht aktivieren!','Error', MB_OK or MB_ICONERROR);
end;
end;
Beim Beenden der Anwendung wird Automatisch der Bildschirmmodus von Windows zurückgesetzt weswegen du dir da normal keine Gedanken machen brauchst. Aber solltest du es Manuell zurücksetzen wollen genügt folgendes und Windows setzt die Auflösung zurück.
Code:
ChangeDisplaySettings(devmode(nil^),0);
Du musst dir da auch nichts merken das macht alles Windows. Der Desktop und dessen Icon bleiben beim Modus FULLSCREEN auch komplett unangetastet.
Bei der Frequenz solltest du allerdings sehr Vorsichtig sein. Sollte sie nicht existieren so wird Windows nichts machen. Selbst dann nicht wenn der Monitor 86Hz kann. Das Beste wäre da du lässt die Frequenzteile weg oder du fragst nach welche der Monitor kann und nimmst dann das höchste oder so. Oder Einstellbar. Aber für den Anfang sollte es genügen es weg zu lassen.
Registriert: Fr Jul 14, 2006 13:08 Beiträge: 117 Wohnort: Berlin
@Flash :
Danke fuer die Link-Reperatur. Nur wusste ich dann auch nicht viel mehr. Das kam dann erst, nachdem ich den Begriff im Tut gefunden hatte, und somit dann die Zusammenhänge erkannte.
@Lossy eX:
Danke fuer den Source, ich hab den mir gespeichert. Hattes mal früher selbst probiert, aber da war irgendwas nicht richtig.
Gruß Uwe
_________________ Die 3 Totfeinde eines Programmierers ? a) Tageslicht b) frische Luft c) ..und das ständige Gebrüll der Vögel
Mitglieder in diesem Forum: 0 Mitglieder und 15 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.