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

Aktuelle Zeit: So Jul 13, 2025 01:07

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 20:47 
Offline
DGL Member
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 01, 2006 00:42 
Offline
DGL Member
Benutzeravatar

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:
  1.  
  2.   {...}
  3.   // In den orthognalen (2D-)Modus wechseln und Menü zeichnen
  4.   glDisable( GL_DEPTH_TEST );
  5.   glMatrixMode(GL_PROJECTION);
  6.   glLoadIdentity;
  7.   glOrtho(0, 800, 600, 0, -2, 2);    // <<<----  
  8.   glMatrixMode(GL_MODELVIEW);
  9.   glLoadIdentity;
  10.   {...}


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:
  1.  
  2.  glOrtho(0, Screen.Width, Screen.Height, 0, -2, 2);
  3.  


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 \":evil:\")

das hab ich dann einfach so gemacht:
Code:
  1.  
  2. procedure TfrmSokoban.FormCreate(Sender: TObject);
  3. begin
  4.   FScaleWidth := Screen.Width / 800;            // Anpassung, da für 800x600 entwickelt
  5.   FScaleHeight := Screen.Height / 600;          // Anpassung, da für 800x600 entwickelt
  6. {...}
  7.  

..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. :cry:

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 01, 2006 08:01 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Noch was zu meiner Ehrenrettung: Der Fragmente Link funktioniert jetzt. Hier nochmal: Fragment

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 01, 2006 08:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Zitat:
spielende Erwachsene

He He. Sehr gute Formulierung. :D

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.

Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3.   dmScreenSettings: DevMode;
  4. begin
  5.  
  6.   WindowState := wsMaximized;
  7.   BorderStyle := bsNone;
  8.  
  9.   ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
  10.  
  11.   with dmScreenSettings do begin
  12.     dmSize := SizeOf(dmScreenSettings);
  13.     dmPelsWidth := 800;
  14.     dmPelsHeight := 600;
  15.     dmBitsPerPel := 32;
  16.     dmDisplayFrequency := 85;
  17.     dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL or DM_DISPLAYFREQUENCY;
  18.   end;
  19.  
  20.   if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL) then begin
  21.     MessageBox(0, 'Konnte Vollbildmodus nicht aktivieren!', 'Error', MB_OK or MB_ICONERROR);
  22.   end;
  23. 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:
  1.   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.

Siehe auch MSDN.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_7gz7.asp


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 02, 2006 21:09 
Offline
DGL Member
Benutzeravatar

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. :shock:

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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