Registriert: Do Nov 04, 2010 20:04 Beiträge: 167 Wohnort: Köln
Programmiersprache: Delphi
Ich rendere meine Plugins auf das DC von meinem Window. (Das Flackert aber ohne spezielle tricks)
Jetzt möchte ich aber direkt auf ein Bitmap zeichnen wie muss ich den CreateRenderingContext erstellen damit dieser erkennt das ich auf ein Bitmap zeichnen will? Das HBitmap wird von außerhalb übergeben.
Dann wird im CreateRenderingContext erkannt das ich ein Bitmap anstelle eines Fenster verwenden will. Aber es rendert nichts. Fehler gibt es aber auch nicht.
Oder hast du vielleicht ein kleines Sample wo ich das nachverfolgen kann? ----------------------------
Mein Problem ist folgendes .. Ich möchte eine Texture oder was auch immer ohne OpenGL Window in meiner Anwendung visualisieren.
Siehe Shot. Corona wird in OpenGL gerendert.
Im Moment erstelle ich ein OpenGL Window auf meine Haupt Anwendung (Fenster). Damit ich die Visualisierung sehen kann muss ich den Container der über dem OpenGL Window liegt durchsichtig machen also mit Alpha wert 160.. Das verändert aber meine Schrift und alles andere was in diesen Window gezeichnet wird. Das möchte ich umgehen in dem ich auf eine andere weise das Bitmap Rendere.. also direkt in meinem Container ohne Hintergrund OpenGL Window.
PS: Wenn das nicht geht wie du sagst dann frage ich mich was diese Flags sollen.. Entweder ich kann auf ein Bitmap zeichnen oder nicht.
Code:
if AType in MemoryDCs then
dwFlags := dwFlags or PFD_DRAW_TO_BITMAP // Draw to Bitmap, warum soll es dann nicht gehen und wenn du recht hast was soll das ganze.
else
dwFlags := dwFlags or PFD_DRAW_TO_WINDOW;
if opDoubleBuffered in Options then
dwFlags := dwFlags or PFD_DOUBLEBUFFER;
if opGDI in Options then
dwFlags := dwFlags or PFD_SUPPORT_GDI;
Bsp: Ich übergebe ein HBitmap.. aus meiner Anwendung und mache das hier..
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 1995
Programmiersprache: C++
Zitat:
You should avoid using this flag during context creation, as it may cause you to not get a hardware-accelerated rendering context. It will give you the Microsoft OpenGL version 1.1 software renderer.
Es ist ein historischer Flag und er sollte nicht mehr verwendet werden. Ein Sample habe ich nicht, aber das OpenGL-Fenster braucht nicht sichtbar sein. Du zeichnest ja in den Buffer und nicht in den DC.
Registriert: Do Nov 04, 2010 20:04 Beiträge: 167 Wohnort: Köln
Programmiersprache: Delphi
i0n0s hat geschrieben:
Zitat:
You should avoid using this flag during context creation, as it may cause you to not get a hardware-accelerated rendering context. It will give you the Microsoft OpenGL version 1.1 software renderer.
Es ist ein historischer Flag und er sollte nicht mehr verwendet werden. Ein Sample habe ich nicht, aber das OpenGL-Fenster braucht nicht sichtbar sein. Du zeichnest ja in den Buffer und nicht in den DC.
Entschuldige verstehe ich jetzt nicht.. Wie kann ich dann den Buffer in meinem Container zeichnen wenn ich kein DC benötigt? Denn die Daten müssen ja wo rein und sichtbar sein. (Kein DC, kein Window.. wohin dann? ) So wie du sagst kann ich ja kein Bitmap als RenderContex definieren.
mExec.SON_PaintHandle:=0;// Scheint ja nach deiner Aussage nicht zu gehen.. gut muss ich dann wieder entfernen.
mExec.Left:=14;
mExec.Top:=46;
mExec.Width:=Rect.Right;
mExec.Height:=Rect.Bottom;
Und auf dem Parent (Window) wohlbemerkt wird gezeichnet. Anschließend erstelle ich in meiner Library ein Fenster auf dem gerendert wird und das parent davon ist VisRenderThread.ParentHandle Mein Fenster das ich übergeben habe und in dem gerendert werden soll (lieber wäre mir ein Bitmap)
Code:
if Windows.RegisterClass(wClass) <> 0then
begin
if VisRenderThread.PaintHandle <> 0then
glCtrl^:= VisRenderThread.ParentHandle
else
glCtrl^:= CreateWindowEx(0, SOClassName, SOTitle, WS_CHILD or WS_VISIBLE or
WS_CLIPSIBLINGS or WS_CLIPCHILDREN,0,0,100,100, VisRenderThread.ParentHandle,0, h_Instance,nil);
Registriert: Do Nov 04, 2010 20:04 Beiträge: 167 Wohnort: Köln
Programmiersprache: Delphi
Hat wirklich niemand ein einfaches Beispiel wie ich den FBO erstellen und damit auf ein Bitmap zeichnen kann? (Delphi natürlich) Der Artikel in der Wiki ist ja fein.. wäre aber besser wenn man das dort besprochenen Tutorial auch laden könnte. (als Quelle nicht als Text)
Ich möchte den VisInfo^.VisBuf in ein Bitmap bringen.. wie ist mir eigentlich egal solange es irgend's geht. Von einer DLL in die Anwendung.
Registriert: Do Nov 04, 2010 20:04 Beiträge: 167 Wohnort: Köln
Programmiersprache: Delphi
mathias hat geschrieben:
Zum Tutorial sollte auch die kompleten Sourcen vorhanden sein. Die .pas Dateiein sind mit Delphi indentisch.
Danke ich habe es mir angeschaut aber nein ist nicht identisch mit Delphi.. Trotzdem Danke.
Zudem arbeite ich mit der dglOpenGL.pas die in keinen der BEispielen vorkommt. Selbst bei einem versuch es nach Delphi zu portieren würden mir die ganzen Abhängigkeiten bzgl.. der fehlenden *.pas Dateien fehlen. Lazarus möchte ich nicht installieren habe mir dadurch schon mal meine D2010 Installation zerschossen.
Mitglieder in diesem Forum: Google [Bot] und 7 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.