HLSL : Texture2D et Texture2DArray
bonjour,
j'ai écrit un shader HLSL avec DX10 dans lequel j'essaye d'utiliser un tableau de textures que je passe comme paramètre au shader
je déclare la variable concernant le tableau de textures ainsi au niveau de mon code ainsi
Code:
1 2 3
|
ID3D10EffectShaderResourceVariable* g_pTexArrayPtr_SV;
g_pTexArrayPtr_SV = g_pMeshEffect->GetVariableByName( "shaderTextures")->AsShaderResource(); |
et au niveau du shader
Code:
1 2
|
Texture2D shaderTextures[3]; |
et j'accède aux différentes textures ainsi
Code:
1 2
|
fFinalColor = shaderTextures[0].Sample( samCube, input.Tex ); |
et cela fonctionne à l'exécution avec un profil de compilation vs_4_0
mais, j'ai une erreur de syntaxe lorsque je compile avec nvidia FXComposer
Code:
1 2
|
Error Error: ID3DXEffectCompiler: Arrays must be either numeric, structure, string or shader |
erreur que je n'ai pas avec FXC.exe ?!
je souhaite donc utiliser un objet Texture2DArray, pour accéder aux diverses textures de mon tableau,
mais je n'arrive pas à trouver la syntaxe correcte pour déclarer le tableau et accéder ensuite aux textures
si je déclare mon tableau ainsi
Code:
1 2
|
Texture2DArray shaderTextures[3]; |
et que j'essaye d'accéder ainsi
Code:
1 2
|
fFinalColor = shaderTextures[0].Sample( samCube, input.Tex ); |
alors j'ai l'erreur suivante
Code:
1 2
|
Error Error: error X3017: 'Sample': cannot implicitly convert from 'float2' to 'const float3' |
des exemples pour accéder aux membres d'un tableau de textures dans le shader ?
Texture2DArray est il la bonne solution à mon problème ?
Quelle est donc la syntaxe à utiliser ?
merci d'avance