Zitat von
turboPASCAL:
Zitat:
Sehe gerade wo übergibst du denn hier das HBITMAP ?
Delphi-Quellcode:
var
hBmp: HBitmap;
//...
if LoadFromRes
then hBmp := Loadimage(HInstance, ImageName, IMAGE_BITMAP, 0, 0, 0)
else hBmp := Loadimage(0, ImageName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
Wir reden aneinander vorbei
Ich möchte weder von resource noch von einem realen Image laden.
Ich erstelle ein HBITMAP mit CreateDIBSection
Delphi-Quellcode:
FillChar(BmpInfo, SizeOf(BITMAPINFO), 0);
BmpInfo.bmiHeader.biSize := SizeOf(BITMAPINFOHEADER);
BmpInfo.bmiHeader.biWidth := w;
BmpInfo.bmiHeader.biHeight := -h -2;
BmpInfo.bmiHeader.biPlanes := 1;
BmpInfo.bmiHeader.biBitCount := 32;
VisInfo^.VisBmp := CreateDIBSection(0, BmpInfo, DIB_RGB_COLORS,
VisInfo^.VisBuf, 0, 0);
Das! VisInfo^.VisBmp
möchte ich jetzt zu einer Texture konvertieren damit ich es als normales Bitmap
auf mein
OpenGL Window rendern kann.
Mit BitBlt geht es nicht ..
Alternativ kann ich das verwenden was funktioniert aber ärger macht wenn der Fullscreen geschaltet wird.
Delphi-Quellcode:
StretchDIBits(
DC, VisInfo^.x, VisInfo^.y, VisInfo^.w, VisInfo^.h,
0, 0, VisInfo^.w, VisInfo^.h, VisInfo^.VisBuf, BmpInfo, DIB_RGB_COLORS, SRCCOPY);
Auf einen normalen
DC (Window) gehts mit
Delphi-Quellcode:
if (not BitBlt(canvas, VisInfo^.x, VisInfo^.y, VisInfo^.w, VisInfo^.h, VisInfo^.VisDC, 0,
0, SRCCOPY)) then
hmmm muss mal sehn warum das soviel mehr CPU auslastung verursacht.
EDIT:
Es gibt eine methode in .NET
Image.FromHbitmap-Methode (IntPtr)
Aber nichts vergleichbares gefunden für andere Sprachen.
Und die andere frage ob das konvertieren dann nicht noch mehr CPU last verursacht.
gruss Emil