Je suis nouveau à Direct3D11 et je suis en train d'essayer de créer une texture programatically dans mon code en utilisant ce code j'ai trouvé en ligne:Confusion au sujet Texture2D et 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);
et que » tout va bien et dandy, mais je suis un peu confus sur la façon de réellement charger cela dans le shader. Ci-dessous j'initialisés cette ID3D11ShaderResourceView:
ID3D11ShaderResourceView* m_pTextureRV = nullptr;
je trouve sur les didacticiels Microsoft dont j'ai besoin d'utiliser le CreateShaderResourceView. Mais comment exactement je l'utilise? J'ai essayé ceci:
hr = m_pd3dDevice->CreateShaderResourceView(tex, NULL , m_pTextureRV);
mais il me donne une erreur, me disant que m_pTextureRV est pas un argument valable pour la fonction. Qu'est-ce que je fais mal ici?
Merci beaucoup Chuck! Je vais certainement regarder dans les pointeurs intelligents COM. – NAKASSEIN