Registriert: Di Jan 20, 2004 20:57 Beiträge: 6 Wohnort: Hannover
Hi leute,
ich wollte gern ein oepngl 1.5 api template haben und habe mir von euch das opengl 1.2 template herruntergeladen und das dann auf opengl 1.5 "geändert".....
es funktioniert auch sehr gut und es war auch nicht schwer das zu portieren nun musste ich leider feststellen das wenn ich das Fenster auf fullscreen mache das er eine exception wirft.....
ich habe mal geschaut und zwar tritt der fehler weder bei der erstellung des fensters noch bei der initalisierung (hoffe so wird das geschrieben ) von opengl 1.5, sondern in der wnd proc.....was mich sehr stutzig macht da er die
exception wirft wenn er einen result zurück liefert.....
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Da sich hier wohl keiner der API-Gurus drum kümmern will versuch ich mal mein bestes. Allerdings nutze ich seit jehher die VCL...
Sag mal genau was du in der OpenGL12-Template geändert hast. Denn eigentlich ist unsere dglOpenGL.pas so ausgelegt, das ein InitOpenGL beim Start und das eintragen in die Uses-Klausel reichen sollte. Ansonsten sollten Anwendungen die die OpenGL12.pas nutzen ohne weitere Änderungen nutzbar sein, was auch der Grund ist warum mir dein Problem im Vollbildmodus recht schleierhaft ist.
Registriert: Di Jan 20, 2004 20:57 Beiträge: 6 Wohnort: Hannover
ich habe die datei so wie ich sie habe ja hier upgeloaded.
du brauchst nur das original api 1.2 template damit vergleichen und hast somit sofort die stellen die ich verändert habe
das finde ich auch sehr schleierhaft, da der fehler weder in der dglopengl.pas auftritt und in der erstellung des fensters.
er trifft in der winproc auf wenn er einen result zurückliefert dh wenn er keine message abfanegn kann und es an die default wndproc liefert.
ich werde mal schauen ob ich den bug nicht finde kann, da ich gerade dabei bin ein kleines game zu machen habe ich mir gedacht um ein paar bytes zu sparen ein fenster mit der api zu erstellen.
wobei ich gerade am überlegen bin ob ich nicht doch die vcl wieder nutze.
(ps: wie wärs wenn ich mal ein kleines tut über Sprites schreibe )
thx für deine hilfe
wenn ich was gefunden habe werde ich dir bescheid sagen
fällt dir was auf? Du kannst doch in der Fensterroutine keine OpenGL Kommandos aufrufen, wenn OpenGL noch gar nicht initialisiert ist! Entweder setzt du nach InitOpenGL ein Flag auf True, und prüfst dies vor dem Aufruf von OpenGL Kommandos ab, oder du setzt mittels SetWindowLong die Fensterereignisbehandlungsroutine des Fensters erst nach der Initialisierung von OpenGL und Renderkontext auf eine Prozedur mit OpenGL Code.
Da kannst du dglOpenGL wirklich keine Schuld geben, das klappt mit OpenGL12.pas genausowenig, wenn du dein Programm nicht umstellst - mach Folgendes:
Code:
WM_SIZE: // Größe anpassen
begin
if LibHandle<>0 then
glResizeWnd(LOWORD(lParam),HIWORD(lParam));
Result := 0;
end;
und alles funktioniert: LibHandle wird von InitOpenGL gesetzt und ist <>0 sobald die OpenGL DLL geladen ist - eleganter ist natürlich die SetWindowLong Methode, da dann innerhalb der Ereignisbehandlungsroutine nichts überprüft werden muss.[/code]
Mitglieder in diesem Forum: Majestic-12 [Bot] 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.