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

Aktuelle Zeit: Fr Jul 18, 2025 05:26

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Mai 23, 2005 11:16 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Tach,

ich hab folgende frage:

Ich hab nen prog in VB was OpenGL initialisiert und mir halt zugriff drauf bietet.

Nun hab ich in Delphi ne DLL gemacht, welches ich Statisch über das VB prog drauf zugreife.
Die DLL macht nix anderes als nen TBitmap mit Daten aus einer binären datei zu laden welches einwandfrei geht.

Ich will nun in der DLL aus dem TBitmap die daten ins OpenGL bringen, und dem VB Prog nur noch die gluint (texture id) übergeben.

Wie gehe ich nun vor, das dieses auch korrekt funktioniert ohne Speicherletzungen ?

Muss ich einen 2 Renderkontext in der DLL erstellen und via wglShareLists übermitteln oder wie ?

hab echt kein plan wie ich da vorgehen soll.

Danke mal,
Final


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 11:26 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich denke eher, dass du dir den Renderkontext in die DLL liefern lassen musst.

(Wobei ich mit DLL keinerlei Erfahrungen habe... :oops: )

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 12:17 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Daran hab ich auch schon gedacht und hab deshalb 2 Parameter der funktion nochzusätzlich gegeben:

Code:
  1.  
  2. function GetDeltaVideoData(var Size : Integer; const Handle : HDC; const Rendercontext : HGLRC; var TexID : Cardinal) : HResult; stdcall;
  3.  


Handle und Rendercontext.

Aber wenn ich vor dem erstellen der Texture einfach nen ActivateRenderingContext mache mit den parametern, gibts ne satte Speicherverletzung.

Ich benutze in der DLL die dglopengl unit übrigens und in VB das Template von Lesson6 (Nehe gamedev) für VB.

Noch dazu ist noch das problem, das dieser vorgang alle 40 ms abläuft und er die alte texture überschreiben muss.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 13:07 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hast du eigentich in der DLL auch gültige OpenGL Funktionspointer? Wenn du in der DLL nämlich die dglOpenGL verwendest, dann sind deren Pointer noch nicht initialisiert. Um das zu machen müsstest du auch das Handle von der geladenen Opengl32.dll mit an deine dll übergeben oder du bindest die entsprechenden Methoden Statisch ein. Was natürlich nicht überall geht. In etwa so wie das mit Jan Horns loader gemacht wurde. Wie sich das dann mit dem RC verhält weiß ich auch nicht. Habe so etwas bisher noch nie gemacht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 15:28 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Der RC ist an den Thread gebunden und daher braucht man da nichts speziell zu beachten, da er auch in der DLL natürlich noch gültig bleibt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 15:46 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Ah das ist gut zu wissen.

Nen InitOpenGL und ReadExtensions brauch ich aber natürlich wenn ich dgl unit benutzten will in der dll ne ?
Komisch ists aber das es trotzdem ne Speicherverletzung gibt.

Der Grund wieso ich das überhaupt in Delphi mache und nicht direkt in VB ist da VB keine gescheiten Routinen für JPEG laden bietet und vor allem nicht das LoadFromStream().


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 16:05 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Zitat:
Der Grund wieso ich das überhaupt in Delphi mache und nicht direkt in VB ist da VB keine gescheiten Routinen für JPEG laden bietet und vor allem nicht das LoadFromStream().

Mit der GDI+ API von Windows kann man BMP,GIF,JPEG,PNG und TIF laden.
Außerdem hat TJPEGImage auch die Methode LoadFromStream.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 19:44 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
@lars:

hast mich falsch verstanden, es ist grad umgekehrt... es gibt in VB ja gar kein TJpegImage oder vergleichbares.
Diese API routinen bieten mir ja keine funktion wie LoadFromStream(). sondern immer nur über das Laden von einzelnen Dateien und das bringt mir gar nix weil ich die Daten für das Jpeg direkt aus ner eigenen Video file hole.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 23, 2005 20:49 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Warum eigentlich überhaupt VB? In VB .Net sollte das übrigens kein Problem sein.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.015s | 15 Queries | GZIP : On ]