Ich brauche wieder einmal eure Hilfe. Und zwar habe ich nun (zwecks ShadowMapping) in meinem Shader ein Texture2DArray angelegt. Zurzeit hat das Array nur eine Dimension von 1. Das Ergebnis ist genau so, wie es sein sollte (also wenn ich alles mit Texture2D mache - also ohne Arrays). ABER ich bekomme folgende Meldung:
Code: Alles auswählen
D3D10: ERROR: ID3D10Device::Draw: The view dimension declared in the shader code does not match the view type bound to slot 1 of the Pixel Shader unit. [ EXECUTION ERROR #354: DEVICE_DRAW_VIEW_DIMENSION_MISMATCH ]
Hier mal ein Auszug aus meinem C++ Programm:
Code: Alles auswählen
ID3D10ShaderResourceView* peSMSRV_D[1] = {NULL};
...
peSmMapEVar = peNTShader->GetVariableByName("SmMap")->AsShaderResource();
....
Render() {
...
peSmMapEVar->SetResourceArray(peSMSRV_D,0,1);
...
}
Code: Alles auswählen
Texture2DArray SmMap;
const int smMapCount = 1;
SamplerState DecalSampler
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
....
PS() {
int i;
for(i=0; i < smMapCount; i++) {
float3 smtex;
smtex.x = (smkoord.x+1)/2;
smtex.y = (smkoord.y-1)/-2;
smtex.z = (float)(i+1);
float smD = SmMap.Sample(DecalSampler, smtex);
}
}
,MfG Alc