동적 큐브 맵 렌더링 작업을하고 있습니다. 특히, 큐브 맵을 렌더링하려면 DirectX SDK 샘플 "CubeMapGS"의 셰이더를 사용하고 있습니다. 여기에서 알 수 있듯이 쉐이더는 정확합니다 :셰이더 연결 오류/불일치
SamplerState ss;
Texture2D tex;
cbuffer Constants
{
float4x4 worldMat;
float4x4 viewMats[6];
float4x4 projMat;
};
struct VS_CUBEMAP_IN
{
float4 Pos : POSITION;
float3 Normal : NORMAL;
float2 Tex : TEXCOORD0;
};
struct GS_CUBEMAP_IN
{
float4 Pos : SV_POSITION; // World position
float2 Tex : TEXCOORD0; // Texture coord
};
struct PS_CUBEMAP_IN
{
float4 Pos : SV_POSITION; // Projection coord
float2 Tex : TEXCOORD0; // Texture coord
uint RTIndex : SV_RenderTargetArrayIndex;
};
GS_CUBEMAP_IN VShader(VS_CUBEMAP_IN input)
{
GS_CUBEMAP_IN output = (GS_CUBEMAP_IN) 0.0f;
// Compute world position
output.Pos = mul(input.Pos, worldMat);
// Propagate tex coord
output.Tex = input.Tex;
return output;
}
[maxvertexcount(18)]
void GShader(triangle GS_CUBEMAP_IN input[3], inout TriangleStream<PS_CUBEMAP_IN> CubeMapStream)
{
for (int f = 0; f < 6; ++f)
{
// Compute screen coordinates
PS_CUBEMAP_IN output;
output.RTIndex = f;
for (int v = 0; v < 3; v++)
{
output.Pos = mul(input[v].Pos, viewMats[f]);
output.Pos = mul(output.Pos, projMat);
output.Tex = input[v].Tex;
CubeMapStream.Append(output);
}
CubeMapStream.RestartStrip();
}
}
float4 PShader(PS_CUBEMAP_IN input) : SV_Target {
return tex.Sample(ss, input.Tex);
}
그러나 작동하지 않습니다. 하지만 난 정말이 인식 할 수없는,
이D3D11 ERROR: ID3D11DeviceContext::DrawIndexed: Vertex Shader - Geometry Shader linkage error: Signatures between stages are incompatible. Semantic 'SV_POSITION' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX]
D3D11 ERROR: ID3D11DeviceContext::DrawIndexed: Vertex Shader - Geometry Shader linkage error: Signatures between stages are incompatible. Semantic 'TEXCOORD' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX]
D3D11 ERROR: ID3D11DeviceContext::DrawIndexed: Geometry Shader - Pixel Shader linkage error: Signatures between stages are incompatible. Semantic 'TEXCOORD' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX]
D3D11 ERROR: ID3D11DeviceContext::DrawIndexed: Geometry Shader - Pixel Shader linkage error: Signatures between stages are incompatible. Semantic 'SV_POSITION' is defined for mismatched hardware registers between the output stage and input stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX]
오류 메시지가 입력 인수 및 다른 쉐이더 기능의 출력 값 사이의 불일치 상태를 나타낼 것으로 보인다 : 사실, 나는 다음 다이렉트 오류 메시지가 나타납니다 불일치.
이 오류와 관련된 아이디어 나 설명이 있으십니까? 그 텍사스의 지오메트리 셰이더의 출력 레지스터 0 동안 얻을 수 있기 때문에 당신은 당신의 픽셀 쉐이더에서 순위를 읽지 않는