glBegin in DLL ausgelagert



  • Hi,
    ich habe eine DLL geschrieben und lade aus dieser eine Funktion. In dieser Funktion sollen Polygone gezeichnet werden, die dann auch auf dem Bildschirm erscheinen sollen 😃

    expoertierte Funktion(..)
    {
    .
    glBegin(..)
    .
    .
    glEnd()
    .
    }
    

    Das Problem liegt jetzt daran, dass nichts auf dem Bildschirm erscheint. Das Zeichnen ansich ist korrekt, denn es wird dargestellt, wenn ich es direkt im Programm aufrufe (nicht in DLL ausgelagert). Die exportierte Funktion wird auch wirklich aufgerufen (setze ich z.B. eine MessageBox rein erscheint diese).

    Hat jemand eine Idee, warum nichts neues auf dem Bildschirm erscheint?
    Wie funktionieren denn ueberhaupt glVertex und Konsorten, woher wissen die, wohin gezeichnet werden soll?
    Konnte irgendwie nirgends was dazu finden.

    Gruss,
    DeSoVoDaMu


  • Mod

    die zeichnen in den gesetzten context, vielleicht setzt du den auf NULL bzw überhaupt nicht beim zeichnen in der dll (bzw im programm nicht, bevor du das zeichnen in der dll aufrufst)



  • Der Prozess in dem gezeichnet wird, muss AFAIK der selbe sein, wie der in dem der RC erzeugt wurde. Bei einer DLL Funktion ist das vermutlich nicht der Fall oder ? (Pure Vermutung, hab keine Ahnung von DLLs 😃 )
    Ich kenne dieses Problem zumindest von dem Versuch in einem separaten Thread zu rendern.


  • Mod

    wenn die dll vom selben programm geladen wird, dürfte das kein prob sein. auch mit multithreading sollte es noch funzen.



  • @DeSoVoDaMu:
    Zur Kontrolle könntest du mal eben versuchen obs geht, wenn du den RC in der DLL erzeugst.



  • Das Zeichnen innerhalb einer DLL in einen bereitgestellten RC funktioniert bei mir problemlos. Vor dem Aufruf der DLL-Fkt. muss nur der RC ausgewählt sein. Schwierig find ist eher das Debuggen der DLL.

    (Ich hab noch keinen Weg gefunden, dass der Debugger erkennt, das die verwendete DLL als Quelle vorliegt.)


  • Mod

    don_basto schrieb:

    Das Zeichnen innerhalb einer DLL in einen bereitgestellten RC funktioniert bei mir problemlos. Vor dem Aufruf der DLL-Fkt. muss nur der RC ausgewählt sein. Schwierig find ist eher das Debuggen der DLL.

    (Ich hab noch keinen Weg gefunden, dass der Debugger erkennt, das die verwendete DLL als Quelle vorliegt.)

    am einfachsten: man startet die dll im debugger, dazu fragt dann das devstudio welche .exe man verwenden möchte. dann kann man in der dll normal debuggen... gibt natürlich noch viele andere dinge, also seit dem VS.net läuft das relativ gut, im VC6++ mußte man noch die ganze applikation in den Debugordner der dll kopieren, damit die richtige dll gefunden wird und man debuginformationen hat... falls du damit wirklich ein problem hast, kannst du eventuell im passenden forum fragen (sonst muss ich das hier splitte *faulsei* 😉 )



  • Danke für die Antworten.
    Also wie es scheint muss der Fehler dann wohl wirklich bei mir liegen, denn mit einer ganz einfachen DLL (wo nur eine Funktion drin ist, die nur ein Polygon zeichnet) geht es wirklich. Da werd ich mal weiter suchen muessen..

    Gruss,
    DeSoVoDaMu


Anmelden zum Antworten