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

Aktuelle Zeit: Fr Jul 18, 2025 08:19

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL unter Lazarus
BeitragVerfasst: Di Sep 01, 2009 00:48 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Hi Leute,
ich hab folgendes Problem, ich arbeite jetzt mit Lazarus und bekomm einfach OpenGL nicht zum laufen, ich find auch den Fehler nicht, sodass ich euch fragen wollte. Als Fehlermeldung kommen immer nen Haufen Speicheradressen :(
Hier der Quelltext für Initialisierung bzw für die Finalisirung

Code:
  1. {--------------------------------------------------------------------------}
  2. {  OpenGL                                                                  
  3. {--------------------------------------------------------------------------}
  4.  
  5. procedure InitOGL;
  6. begin
  7.   DC:=GetDC(Handle);
  8.   if not InitOpenGL() then
  9.     Halt;
  10.   RC:=CreateRenderingContext(DC,
  11.                              [opDoubleBuffered],
  12.                              32,
  13.                              24,
  14.                              0,
  15.                              0,
  16.                              0,
  17.                              0);
  18.   ActivateRenderingContext(DC,RC);
  19.   glClearColor(1, 0, 1, 0.0);
  20.   glEnable(GL_DEPTH_TEST);
  21.   glDepthFunc(GL_LESS);
  22. end;
  23.  
  24. procedure DrawScene;
  25. begin
  26.   glViewport(0,0,Width,Height);
  27.   glMatrixMode(GL_PROJECTION);
  28.   glLoadIdentity;
  29.   glOrtho(0,Width,0,Height,0,128);
  30. end;
  31.  
  32. procedure FinalOGL;
  33. begin
  34.   DeactivateRenderingContext;
  35.   DestroyRenderingContext(RC);
  36.   ReleaseDC(Handle, DC);
  37. end;
  38.  
  39. {--------------------------------------------------------------------------}
  40. {  Event-Handler                                                    
  41. {--------------------------------------------------------------------------}
  42.  
  43. function WndProc(h_wnd:HWND; umsg:UINT; wp:WPARAM; lp:LPARAM):LRESULT;stdcall;
  44. begin
  45.    case umsg of
  46.      WM_CREATE:  begin
  47.                    InitOGL;
  48.                  end;
  49.      WM_DESTROY: begin
  50.                    FinalOGL;
  51.                    PostQuitMessage(0);
  52.                    Result:=0;
  53.                  end;
  54.      else
  55.      begin
  56.        DrawScene();
  57.        Result:=DefWindowProc(h_Wnd, umsg, wP, lP);
  58.      end;
  59.    end;
  60. end;


Der Fehler tritt immer in der DrawScene auf, wenn ich einen OpenGL-Befehl ausführen lassen will...

eigentlich dürfte ja dann vom logischen her OGL nicht initialisiert sein. Ist es aber :(

cuz bubble

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 01, 2009 01:45 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Nach InitOpenGL() musst du noch ReadExtensions() aufrufen.
Erst danach sind die OpenGL Funktionen initialisiert.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 01, 2009 11:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Eigentlich wird das ReadExtensions vom ActivateRenderingContext aufgerufen. Aber ich weiß nicht, ob ich die aktuelle Header-Version habe - bin immer ein bissel hinten nach :wink:

@bubble: Du gibst mir zuwenig Input. Die Initialisierung von OpenGL sieht richtig aus, aber ich würde gerne wissen, wo genau Du die WndProc eingebaut hast. Verwendest Du die LCL? Wenn nicht, wo genau und wie wird das Fenster erzeugt? Wie ist sichergestellt, dass diese WndProc auch aufgerufen wird? Und so weiter.


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 3 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.008s | 16 Queries | GZIP : On ]