Ich als Neuling, was Grafikprogrammierung angeht, brauche eure Hilfe. Und zwar Versuche ich für einen ToonShader (bzw später für Shadowmapping) ein zusätzliches Rendertarget zu erstellen.
Das ganze passiert bei mir in der OnResizeSwapChain (ich denke das ist der beste Platz dafür, da ich ha bei Größenänderung das RenderTarget/Textur neu erstellen muss).
Leider kommt in der letzten Zeile, des Codes unterhalb, die Meldung "E_INVALIDARG" und ich kann mir nicht erklären warum.
Inits:
Code: Alles auswählen
#define WINDOW_WIDTH 1024
#define WINDOW_HEIGHT 768
ID3D10RenderTargetView *pePreToonRTV = NULL;
ID3D10Texture2D *pePreToonRTT = NULL;
ID3D10DepthStencilView *pePreToonDSV = NULL;
ID3D10Texture2D *pePreToonDST = NULL;
ID3D10RenderTargetView* peOrigRT = NULL;
ID3D10DepthStencilView* peOrigDS = NULL;
Code: Alles auswählen
pd3dDevice->OMGetRenderTargets( 1, &peOrigRT, &peOrigDS );
D3D10_RENDER_TARGET_VIEW_DESC DescRTV;
peOrigRT->GetDesc( &DescRTV );
D3D10_TEXTURE2D_DESC dstex;
dstex.Width = WINDOW_WIDTH;
dstex.Height = WINDOW_HEIGHT;
dstex.MipLevels = 1;
dstex.Format = DescRTV.Format;
dstex.SampleDesc.Count = 1;
dstex.SampleDesc.Quality = 0;
dstex.Usage = D3D10_USAGE_DEFAULT;
dstex.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE;
dstex.CPUAccessFlags = 0;
dstex.MiscFlags = 0;
dstex.ArraySize = 1;
V_RETURN(pd3dDevice->CreateTexture2D( &dstex, NULL, &pePreToonDST ));
// Create the render target view
D3D10_RENDER_TARGET_VIEW_DESC DescRT;
DescRT.Format = dstex.Format;
DescRT.ViewDimension = D3D10_RTV_DIMENSION_TEXTURE2D;
DescRT.Texture2D.MipSlice = 0;
V_RETURN(pd3dDevice->CreateRenderTargetView( pePreToonRTT, &DescRT, &pePreToonRTV ));
Ich hoffe hier kann mir jmd helfen.
MfG, Alc
P.S.: Ich arbeite im Reference-Mode