イム、イム私は、 フロートのように、するfloat2いくつかの属性を送って、いくつかのVertexShaderとPixelShaderをコンパイルして実行することができましたC++シェーダ、HLSL、シェーダに送る方法、テクスチャ? "sampler2d"? C++とHLSL witg一部のシェーダー操作を学習開始
を勉強しながら、いくつかのテストを行うにはD3DXCompileShaderFromFileを使用して、worldMatrix、色情報などを設定するためにするfloat3、のfloat4、するfloat4x4は、ここにいくつかの例です:
void CShader::SetVector4(char name[], Vect4f vect)
{
D3DXVECTOR4 v(vect.x,vect.y,vect.z,vect.w);
D3DXHANDLE h = m_pConstantTable->GetConstantByName(NULL, name);
m_pConstantTable->SetVector(m_pDevice, h, &v);
}
SetMatrixとSetFloatとほぼ同じもの、例:
myShader->SetVector4("Diffuse",Vect4f(1.0f,0.0f,0.0f,1.0f));
基本的なライトシェーダの基本的なシェーダ
「pixelShader」にテクスチャを送信するにはどうすればよいですか?私のPSで「sampler2d」型として宣言、そう
float4 Diffuse;
float4 Ambient;
sampler2D baseMap;
float4 Main(float3 L: TEXCOORD0, float3 N: TEXCOORD1,float2 texCoord: TEXCOORD2) : COLOR
{
float facingRatio = dot(L, N);
float4 tex = tex2D(baseMap, texCoord);
return tex * Diffuse * facingRatio + Ambient * tex;
}
がNULLテクスチャから離れて合理的なルックス、なぜイムはかなり確実ではない、動作します。あなたが望むテクスチャを実際に取得している場合は、GPUに別の場所に送る必要がありますが、それはある種の流行です。 – Pete