Entwickler-Ecke

Multimedia / Grafik - Mit OpenGL in Bitmap rendern


jvkh - Mi 20.04.05 17:42
Titel: Mit OpenGL in Bitmap rendern
Hallo Leute,

In vielen Demos und Büchern gibt es immer nur Beispiele wie man anhand eines Gerätekontextes für ein Fenster einen OpenGL-Renderingcontext erstellt. Wie kann man das analog zu einem Bitmap? Ich hatte bei Tests hauptsächlich das Problem, dass ich kein doppelt gepuffertes Bitmap anlegen konnte. Dadurch schlug die Erzeugung des Renderingcontexts fehl. Kann mir jemand weiterhelfen? Ich arbeitet mit Delphi7 Pro ohne VCL.

Jörg


Lossy eX - Mi 20.04.05 18:07

Ja. Das geht. Dadurch, dass dein Bild bereits ein Buffer ist brauchst du kein Doublebuffering. Obwohl das wohl auch gehen sollte. Es kann aber durchaus sein, dass du dich dann recht schnell im Softwaremodus befindest. In der dglOpenGl.pas [http://www.delphigl.com/forum/viewtopic.php?t=1863] existiert eine Methode namens CreateRenderingContext. Wenn du dort als DC ein Bitmap.Canvas.Handle übergibst, dann sollte er rein theoretisch in das Bitmap rendern. Das Bild muss vorher aber 100%tig richtig initialisiert sein. Also Pixelformat am Besten auf 24 oder 32. Breite und Höhe entsprechend deinen Wünschen.


jvkh - Di 03.05.05 15:03

Hi,

vielen Dank nochmal für die Antwort. Ich bein jetzt
endlich mal dazu gekommen, das auszuprobieren.
Generell funktioniert es, aber leider nur bedingt.
Das Bitmap erlaubt bei mir keine Darstellung von
texturierten Rechtecken. Die Fläche bleibt jetzt
weiß. Generell kann man wohl sagen, dass der
Funktionsumfang nicht voll unterstützt wird. Ich
denke, dass ich vieleicht doch noch am Konzept
Änderungen vornehmen werde.

Jörg


Lossy eX - Di 03.05.05 17:14

Also Texturen sollte schon unterstütt werden. Für mich klingt es eher danach, dass die Textur nicht ganz richtig angelegt werden konnte. Das kann aber auch daraus resultieren, dass der Loader etwas anspricht was nicht unterstützt wird. Was für einen hast du denn verwendet?


FilE - So 15.05.05 15:58
Titel: Warum nicht mit SDL
es gäbe doch die möglichkeit openGL zusammen mit SDL zu nutzen. SDL für delphi gibt es in form der JEDI-SDL, welche mit OpenGL12.pas auch die openGL header beinhaltet. Das beste: bei der initialisierung erstellt man ein SDL-surface (kein DC Shit :twisted: ), welches man jederzeit mit SDL_SaveBMP( surface) speichern kann. ausserdem kann man solche programme (SDL+OpenGL) auch auf Linux/Unix/OSX kompilieren.

gruss FilE