나는 directX를 사용하는 Pixel Shader 5.0에 대한 튜토리얼을 진행할 것입니다.HLSL 픽셀 쉐이더 5.0 NdotL 조명 샘플
cbuffer ConstantBuffer : register(b0)
{
matrix World;
matrix View;
matrix Proj;
float4 vLightDir[2];
float4 vLightColor[2];
float4 vOutputColor;
}
struct PS_INPUT
{
float4 Pos : SV_POSITION;
float3 Norm : TEXCOORD0;
};
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 main(PS_INPUT input) : SV_Target
{
float4 finalColor = 0;
//do NdotL lighting for 2 lights
for(int i=0; i<2; i=""
{
finalColor += "saturate"(dot=""((float3)vLightDir=""[i=""],input.Norm="") * vLightColor=""[i=""
}
finalColor.a = "1"
return="" finalColor="";
}
루프에 대한 파일의 끝에 나를 혼란이있다 : 나는 내가 다음 코드와 PixelShader.hlsl 파일을 만들 수있는 네 번째 교훈에 도착하기 전까지는 벌금을하고 있었다. Int i는 상수 문자열로 초기화되고 닫는 괄호가 없습니다. 마찬가지로 for 루프 내의 코드도 올바르지 않게 보입니다. float4 구조체에 "saturate"라는 문자열이 추가 된 것처럼 보입니다.이 문자열은 함수이기도합니다. 적절한 중괄호가없고 세미콜론도없는 함수.
샘플 코드에 몇 가지 오타가있는 것처럼 보입니다. 문제를 해결하기 위해 고심하고 있습니다. 여기에 무엇을 써야하는지에 대한 생각은 무엇입니까?
내가 VS2012에서 코드를 컴파일 할 때, 나는 다음과 같은 오류 얻을 : 오류 X3017 : 암시 내가로 변경하여 루프에 대한 코드를 수정 시도 'INT'
에 'const를 문자열'에서 변환 할 수 없습니다
for(int i=0, i<2, i++)
내가 for 루프 내 코드에 다른 오류가 발생합니다 : 오류 X3022을 : 스칼라, 벡터 또는 매트릭스 당신의 도움이