voila, je me suis fait un ciel étoilé en point sprites, je veux blender 2 textures par point sprite avec le coef de blending qui bouge ds le temps.....
je joue donc avec le texturefactor.......
voici le code c++:
Stars::RenderStars(LPDIRECT3DDEVICE8 D3D_Device)
{
StarsEffect.Interface->SetTexture(MAKEFOURCC('t','S','R','0',StarsTexture[Star0]);
StarsEffect.Interface->SetTexture(MAKEFOURCC('t','S','R','1',StarsTexture[Star1]);
DWORD factor;
factor=(((DWORD)((float)(sin(w)+1.)*255./2.))<<24
)+0x0ffffff;
w+=0.2;
D3D_Device->SetRenderState(D3DRS_TEXTUREFACTOR,fa
ctor);
UINT Passes,p;
StarsTechnique->Begin(&Passes);
for(p=0 ; p < Passes ; p++)
{
StarsTechnique->Pass(p);
Render(D3D_Device,0,numPSprites);
}
StarsTechnique->End();
}
le StarsEffect.Interface, point l'interface d'effet ID3DXEffect
le StarsTechnique est la technique choisie (la 0)......
le TextureFactor varie donc de 0x00ffffff à 0x0ffffffff (y'a que le alpha que je fait bouger)
le fichier de technique que j'utilise:
texture tSR0;
texture tSR1;
technique T0
{
Lighting = False;
SpecularEnable = False;
ZEnable = False;
pass P0
{
Texture[0] = <tSR0>;
Texture[1] = <tSR1>;
ColorArg1[0] = Texture;
ColorArg2[0] = Diffuse;
ColorOp[0] = Modulate;
AlphaArg1[0] = Texture;
AlphaArg2[0] = Diffuse;
AlphaOp[0] = Modulate;
ColorArg1[1] = Texture;
ColorArg2[1] = Current;
ColorOp[1] = BlendFactorAlpha;
AlphaArg1[1] = Texture;
AlphaArg2[1] = Current;
AlphaOp[1] = BlendFactorAlpha;
ColorOp[2] = Disable;
AlphaOp[2] = Disable;
}
}
le pb, c'est que lorsque je mets les deux textures dans la passe 0, ça varie entre la première texture et du noir...
et je commente la déclaration d'utilisation de la deuxième texture, j'ai que la premiere sans variation (logique puisque y'a plus qu'une texture, le deuxième stage est ignoré)
y'a t-il un restriction avec les points sprites qui empèchent d'utiliser deux textures ?
j'ai l'impression que c'est le blendfactoralpha qui alpha qui passe po......
ou alors y'a méprise entre les ColorArg1/2/0 (j'ai vu qu'il y a le 0, mais y causent pas dans le sdk, a part le LERP ???)
Qu'estcequichie ?