Jump to content

  • Log In with Google      Sign In   
  • Create Account

How to do this in Direct3D?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Sphere   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 January 2000 - 07:17 AM

Hi everyone. in OpenGL: glColor4f( 1.0f, 1.0f, 1.0f, 0.0f ); // This call render primitives at 0 intensity // we can not see the primitive right? glColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); // This call render primitives at full intensity // we can see the primitive right? By incrementing or decrementing the fourth parameter (the alpha value), we can fade in or fade out primitives right? Ok, now the question is how can I do this in D3D? Please for all the D3D Masters out there, please reply. Ok, thanks a lot

Sponsor:

#2 Shinkage   Members   -  Reputation: 595

Like
Likes
Like

Posted 03 January 2000 - 12:55 PM

When specifying your vertex format, make sure that you add vertex color as one of the options. Your vertex structure would, of course, have to have a field containing its color. To set that color use the macro D3DRGBA if you want to give it an alpha value or D3DRGB if you don''t. You can look them up in the DirectX help file.

#3 mutex   Members   -  Reputation: 1109

Like
Likes
Like

Posted 03 January 2000 - 01:47 PM

it took me a while to find this one as the documentation was _very_ confusing regarding alpha blending. but here''s code for ya:


// prepare states
device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2);
device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR /
D3DTA_ALPHAREPLICATE);

device->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE);
device->SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_SRCALPHA);
device->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_INVSRCALPHA);

// to enable the alpha for a primitive
device->SetRenderState(D3DRENDERSTATE_TEXTUREFACTOR,
dwTrans);
device->SetTextureStageState(0, D3DTSS_ALPHAOP,
D3DTOP_SELECTARG2);
device->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,
TRUE);

// to disable alpha
device->SetTextureStageState(0, D3DTSS_ALPHAOP,
D3DTOP_DISABLE);
device->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,
FALSE);


#4 Sphere   Members   -  Reputation: 122

Like
Likes
Like

Posted 04 January 2000 - 04:17 AM

Hey, thanks, it works.

What if I have alpha info in the texture? the code mutex wrote discard the alpha info on texture right?

I have tried some combinations, but the part that is supposed to be invinsible becomes visible just before the whole primitive becomes invinsible.

Ok, thanks again.

#5 Shinkage   Members   -  Reputation: 595

Like
Likes
Like

Posted 04 January 2000 - 04:48 AM

Those texture stage codes aren''t exactly right if you want to use the alpha value from both vertices and textures. Try this and you should have some luck.


device->SetTextureStageState( D3DTSS_ALPHAOP, D3DTOP_MODULATE );
device->SetTextureStageState( D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
device->SetTextureStageState( D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );


I hope that works for ya, those parameters always do confuse me.

#6 Sphere   Members   -  Reputation: 122

Like
Likes
Like

Posted 04 January 2000 - 05:04 AM

Thanks for reply Shinkage.

But I want to to fade in or fade out my primitives in the loop. I think your code can''t do this.

I think the D3DTA_FACTOR has to be set somewhere in argument1 or 2, because later on in the main loop I can call

device->SetRenderState( D3DRENDERSTATE_TEXTUREFACTOR, rgba )

and by modifying the ''alpha'' in ''rgba'' the primitives can fade in and fade out. But the texture''s alpha itself is discarded.

Ok, thanks again.

#7 Sphere   Members   -  Reputation: 122

Like
Likes
Like

Posted 04 January 2000 - 06:22 AM

Hi again.

Sorry about my bad English, I think I made you confuse.

I''ll make it simple this time.
Ok, do you know the smoke effect? as the smoke get higher and higher, it get bigger also, and it fade out, then at last it''s gone.

Yeah, that''s what I want to do in D3D.

Ok, thanks again.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS