についての混乱私はDirect3D11に新しいですし、私は現在、私はオンラインで見つけるこのコードを使用して、私のコード内でプログラム的にテクスチャを作成しようとしています:にTexture2DとShaderResourceViews
// Some Constants
int w = 256;
int h = 256;
int bpp = 4;
int *buf = new int[w*h];
//declarations
ID3D11Texture2D* tex;
D3D11_TEXTURE2D_DESC sTexDesc;
D3D11_SUBRESOURCE_DATA tbsd;
// filling the image
for (int i = 0; i<h; i++)
for (int j = 0; j<w; j++)
{
if ((i & 32) == (j & 32))
buf[i*w + j] = 0x00000000;
else
buf[i*w + j] = 0xffffffff;
}
// setting up D3D11_SUBRESOURCE_DATA
tbsd.pSysMem = (void *)buf;
tbsd.SysMemPitch = w*bpp;
tbsd.SysMemSlicePitch = w*h*bpp; // Not needed since this is a 2d texture
// initializing sTexDesc
sTexDesc.Width = w;
sTexDesc.Height = h;
sTexDesc.MipLevels = 1;
sTexDesc.ArraySize = 1;
sTexDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sTexDesc.SampleDesc.Count = 1;
sTexDesc.SampleDesc.Quality = 0;
sTexDesc.Usage = D3D11_USAGE_DEFAULT;
sTexDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
sTexDesc.CPUAccessFlags = 0;
sTexDesc.MiscFlags = 0;
hr = m_pd3dDevice->CreateTexture2D(&sTexDesc, &tbsd, &tex);
と「すべては結構なことが、私これを実際にシェーダーにロードする方法について少し混乱しています。私はこのID3D11ShaderResourceView初期化の下:
ID3D11ShaderResourceView* m_pTextureRV = nullptr;
を私はCreateShaderResourceViewを使用する必要があり、Microsoftのチュートリアルで見つかりました。しかし、私はそれをどのように使っていますか?
hr = m_pd3dDevice->CreateShaderResourceView(tex, NULL , m_pTextureRV);
が、それはm_pTextureRVは、関数の有効な引数ではないことを私に言って、私にエラーを与える:私はこれを試してみました。私はここで間違って何をしていますか?
ありがとうございましたチャック!私は間違いなくCOMスマートポインタを調べます。 – NAKASSEIN