このチュートリアルでは、明示的なOUT構造を使用します。例:
struct C3E1v_Output {
float4 position : POSITION;
float4 color : COLOR;
};
C3E1v_Output C3E1v_anyColor(float2 position : POSITION,
uniform float4 constantColor)
{
C3E1v_Output OUT;
OUT.position = float4(position, 0, 1);
OUT.color = constantColor; // Some RGBA color
return OUT;
}
しかし、私のシェーダーの1つを見ると、明示的な入力/出力パラメーターがあります。
float4 slice_vp(
// Vertex Inputs
in float4 position : POSITION, // Vertex position in model space
out float4 oposition : POSITION,
// Model Level Inputs
uniform float4x4 worldViewProj) : TEXCOORD6
{
// Calculate output position
float4 p = mul(worldViewProj, position);
oposition=p;
return p;
}
これでHLSL2GLSLを使用する際に問題が発生し、Cg形式が原因であるかどうか疑問に思いました(Cgスクリプトとしては正常に機能しますが)。「正しい」方法はありますか、それとも同じ目的のための2つの単純に異なる方法ですか?