ich habe nen problem, ich habe mir ne DLL gebasteln... da is der standard OpenGL Initialiserungskram drin.
also DC holen, Renderkontext erstellen, Renderkontext aktivieren usw.
die dll hat nur 3 funktionen für exports, Init, Kill und Resize.
Nun ruft ein anderes Delphi App die DLL auf:
[pascal]
procedure InitR(_AOwner : HWND); stdcall; external 'interface_test.dll' name 'Init';
procedure KillR; stdcall; external 'interface_test.dll' name 'Kill';
procedure ResizeR(_Width, _Height : Integer); stdcall; external 'interface_test.dll' name 'Resize';
implementation
{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
DoubleBuffered := True;
InitR(Handle);
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
KillR;
end;
procedure TfrmMain.FormResize(Sender: TObject);
begin
ResizeR(ClientWidth, ClientHeight);
end;
[pascal]
In Der DLL App wird auch bei Init ein Renderthread (TThread) Initialisiert und fängt dann an zu rendern (Normal Priority).
Komischerweise ist das endergebnis aber so:
Bildfehler, und das fehlerhafte bild stammt von einem vorherigem geöffnetem OpenGL Prog.
Sprich er aktuallisiert das bild nicht.
Der Renderthread läuft aber einwandfrei weiter, daran liegt nicht.
Ich denke mal es ist nur ne kleinigkeit
Wäre nett wenn sich jemand mal den src anschaut und das fixed.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das hier :
Code:
procedure TR3DThread.Execute;
begin
while not Terminated do
Run;
end;
procedure TR3DThread.Run;
begin
if Assigned(FRunProc) then
FRunProc;
end;
Kann so nicht gehen. Zum einen solltes du die Sachen in eine CriticalSection packen und sychronisieren, und zum anderen wird dein Programm niemals dazu kommen die Puffer zu tauschen, da dein Thread permanent abläuft und du gar keine Bedingung hast. Du musst also im Execute z.B. sowas machen :
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.