im à partir apprendre une manipulation Shader WITG C++ et HLSL, im en utilisant D3DXCompileShaderFromFile pour faire des tests tout en apprendsShader C++, HLSL, comment envoyer au shader, la texture? "sampler2d"?
j'ai pu compiler et exécuter certains VertexShader et PixelShader, envoyer des attributs, comme flotteur, float2 , float3, float4, float4x4, pour définir WorldMatrix, informations couleur, etc, voici quelques exemples:
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);
}
presque la même chose avec SetMatrix et SetFloat, ex:
myShader->SetVector4("Diffuse",Vect4f(1.0f,0.0f,0.0f,1.0f));
mais j'ai couru à un problème de faire ainsi Basic Light shader
comment puis-je envoyer une texture à mon "pixelShader"? dans mon ps est déclarée en tant que type « sampler2D », donc je ne suis pas sûr de ce à utiliser pour envoyer ces informations
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;
}
Attend part raisonnable de la texture NULL. Si vous obtenez réellement la texture que vous voulez, vous devez l'envoyer au GPU ailleurs et c'est une sorte de coup de chance. – Pete