Sign in to follow this  
noodleBowl

Texture and diffuse Color; Other minor question

Recommended Posts

Hey All I was wondering if I could get some answers for these questions:

 

Question1

I currently have a custom FVF, vertex structure, and stage setting looking like this

//Custom FVF
CUSTOMFVF = D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_DIFFUSE;

//Vertex structure
struct vertex
    {
        float x;
        float y;
        float z;
        D3DCOLOR color;
        float u;
        float v;
    };

//Stage setting
device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);

And I'm wondering how I can blend the Texture and Diffuse color together so that:

A. Any Alpha in my texture uses the Color set in my vertex points

B. The Texture being used and Color of each vertex point are blended together

 

EG:

For A

[attachment=18451:blend.png]

 

For B

[attachment=18452:blendB.png]

 

Question 2

I currently have a class that needs to use the Direct X device I create, my idea is to just pass a reference to the Direct X device in a init method or the classes constructor.

 

So I have done it like this:

 

In my Header file for my class

//Under the public section, my constrcutor
MyClass(LPDIRECT3DDEVICE9 &device);

//Under private section in the header class file; Normal variable creation
LPDIRECT3DDEVICE9 refDevice;

In my CPP file for my class

//The constructor of my class
MyClass::MyClass(LPDIRECT3DDEVICE9 &device)
{
         refDevice = device;
}

Now I'm wondering is implementation right? I'm I just storing the address to where my Direct X device is or is this really making a copy of my Direct X device?

Edited by noodleBowl

Share this post


Link to post
Share on other sites

Question 1: Sorry I haven't used the fixed-function pipeline (FFP) for a loooong time, so I cannot help you. But I seriously suggest you to try to move to shaders as soon as possible. Not only will you get much bigger flexibility (you won't have to ask how to set the FFP to do something, you'll be able to program it yourself quite easily), but also better "compatibility", because you cannot use FFP with anything above D3D 9.0c. You can still stay with 9.0c if you want, but you should be getting yourself prepared by moving to shaders.

 

Question 2: You're just storing the pointer (4 bytes), you're not making a copy of the device.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this