-2

後で DirectX11 テクスチャに変換するために、テキストをバイト配列に描画する必要があります。たとえば、次のように、多くのことを考えてみました。

HDC hdc= GetDC( g_hWnd );
int w= 600;
int h= 450;
    unsigned* buf= new unsigned [w*h];
for( int a=0;a<w*h;a++)buf[a]= 0x0;
HBITMAP hbmp= CreateBitmap( w, h, 1, 4*8, buf );    
if(!hbmp)throw "error bmp";
HDC vhdc= CreateCompatibleDC( hdc );
if(!vhdc)throw "error vhdc";
SelectObject( vhdc, hbmp );
TextOut( vhdc, 0, 0, L"TEST", 4 );

しかし、その後 buf はまだ空です。イントロで64KB必要なので、大きなライブラリは使えません。

これは、私が試した別の機能しないコードです。

unsigned* buf= new unsigned [w*h];
for( int a=0;a<w*h;a++)buf[a]= 0x0;
HDC vhdc= CreateCompatibleDC( hdc );    if(!vhdc)throw "vhdc is hard";
HBITMAP hbmp= CreateCompatibleBitmap( hdc, w, h );
BITMAPINFO bmi = {{sizeof(BITMAPINFOHEADER),w,-h,1,32,BI_RGB,0,0,0,0,0},{0,0,0,0}};
SelectObject( vhdc, hbmp );
TextOut( vhdc, 0, 0, L"TEST", 4 );

BITMAPINFO bmpi;
ZeroMemory( &bmpi, sizeof(bmpi) );
//GetDIBits(vhdc, hbmp, 0, h, buf, &bmpi, NULL);
GetDIBits(vhdc, hbmp, 0, h, buf, &bmpi, BI_RGB);

vhdc と hdc を GetDIBits 引数として使用していましたが、どれも機能しません。

4

2 に答える 2

1

CreateBitmap指定されたデータのみを入力として使用します。バッファに描画しても、バッファは更新されません。CreateDIBSection代わりに使用する必要があります。

于 2013-09-18T16:18:58.273 に答える