Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: So 09.11.03 20:50 
Hallo,

ich bin echt am verzweifeln, ich sitze da jetzt seit mindestens 6 Stunden dran... wenn mir hier keiner hilft, dann gehe ich nacher echt auf den Dachboden...

Also, ich will mit OpenGL in ein Bitmap rendern:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
  RenderBuffer.Width := OutputWidth;
  RenderBuffer.Height := OutputHeight;
  RenderBuffer.PixelFormat := pf24Bit;
  RenderBuffer.Canvas.Lock;
  DC := RenderBuffer.Canvas.Handle;

  ZeroMemory(@Pfd, SizeOf(Pfd));
  Pfd.nSize := SizeOf(Pfd);
  Pfd.nVersion := 1;
  Pfd.dwFlags := PFD_SUPPORT_GDI or PFD_SUPPORT_OPENGL or PFD_DRAW_TO_BITMAP;
  Pfd.iPixelType := PFD_TYPE_RGBA;
  Pfd.cColorBits := 24;

Also:
- wenn ich das mit Canvas.Lock weglasse, passiert gar nix - das Bitmap bleibt weiß
- PFD_SUPPORT_GDI hat gar keinen einfluss

So, ich rendere mehrere Bilder, wobei jedesmal 2 Texturen überlagert werden (AlphaBlending). Das erste Bild ist super OK, aber das 2. Bild (also nachm 2. mal glFinish) ist das Bild extrem hell.

So, jetzt werdet ihr sagen, da ist halt ein Prog-Fehler drin. Aber was soll ich sagen, wenn ich 2 Zeilen ändere, nämlich den DC vonnem Panel hole und statt PFD_DRAW_TO_BITMAP PFD_DRAW_TO_WINDOW verwende, ist alles perfekt. Aber beim Bitmap rendern schein OpengL wohl zu vergessen, den Puffer zu löschen (also vor jedem Frame alles schwarz zu machen). Obwohl ich das hier habe:
ausblenden Delphi-Quelltext
1:
2:
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity;

wird vor jedem Frame aufgerufen.

Kann es etwa sein, dass meine OpenGL-Hardware (bzw. Software) einen Schuss weg hat, oder ist DrawToBitmap eh so 'ne Art "Deprecated", oder muss man was bestimtmes beachten beim Bitmaprendern, oder was soll ich denn noch machen? Ich brauche die Daten als Bitmap, und da bringt es mir verdammt wenig, wenn ich die Szene auf 'nem Panel habe!


EDIT: Habe grade was ultrageiles rausgefunden: wenn ich auf demselben Form ein Panel platzeire, klappt's... ohne das Panel tritt der besagte Effekt auf, dass das Bitmap immer heller wird. Aber das ist doch keine Lösung!

_________________
Life is a bad adventure, but the graphic is really good!