Jump to content

  • Log In with Google      Sign In   
  • Create Account

Vertex Buffer Diffuse Colouring Not Working


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
No replies to this topic

#1 ryan20fun   Members   -  Reputation: 1033

Like
0Likes
Like

Posted 04 January 2012 - 01:35 PM

Hi All.

ive followed Reimers "Adding Some Color And The Z-Buffer" tutorial and its not working.

the D3D debug runtime only complains about "WRITEONLY" not being set for the vertex buffer on creation.

my code is almoast identical to his terrain rendering section.

ive enabled the depth-stencil buffer, the tiger model from the SDK "meshes" tutorial renders correctly( a bit pixelated ), but the terrain is completely white.

the diffuse colour of the "OURCUSTOMVERTEX" struct looks to be correctly, but the terrain is completely white.

here is the diffuse colour setting code:
if (height < MinimumHeight + (MaximumHeight - MinimumHeight) /4) //new
   	 cv_Vertices[y*WIDTH + x].color = 0xff0000ff;
else if (height < MinimumHeight + (MaximumHeight - MinimumHeight) * 2/4)
   	 cv_Vertices[y*WIDTH + x].color = 0xff228b22;
else if (height < MinimumHeight + (MaximumHeight - MinimumHeight) * 3/4)
   	 cv_Vertices[y*WIDTH + x].color = 0xffa52a2a;
else
   	 cv_Vertices[y*WIDTH + x].color = 0xffffffff;

adn rendering code:
Device->SetStreamSource( 0, VertexBuffer, 0, sizeof( OURCUSTOMVERTEX ) );
Device->SetFVF( D3DFVF_XYZ | D3DFVF_DIFFUSE );
Device->SetIndices( IndexBuffer );

D3DXMATRIX matWorld;
D3DXMATRIX matTranslation;
D3DXMATRIX matRotation;

D3DXMatrixTranslation( &matTranslation, xPos, yPos, zPos );
D3DXMatrixRotationYawPitchRoll( &matRotation, DegreeToRadian( 0 ), DegreeToRadian( 180 ), DegreeToRadian( 0 ) );
matWorld = matRotation * matTranslation;

Device->SetTransform( D3DTS_WORLD, &matWorld );

Device->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, WIDTH * HEIGHT, 0,( WIDTH - 1 ) * ( HEIGHT - 1 ) * 2 );

Thanks In Advance.
Never say Never, Because Never comes too soon. - ryan20fun

Disclaimer: Each post of mine is intended as an attempt of helping and/or bringing some meaningfull insight to the topic at hand. Due to my nature, my good intentions will not always be plainly visible. I apologise in advance and assure you I mean no harm and do not intend to insult anyone.

Sponsor:

#2 iedoc   Members   -  Reputation: 968

Like
0Likes
Like

Posted 04 January 2012 - 10:54 PM

maybe its because your if else if conditions are failing because your terrain is too high? so that only the else statement is being executed, so all of your terrain is white. try changing the else statement to another color to see if that changes anything. also, is MinimumHeight and MaximumHeight defined as an integer type, like this:

int minimumHeight;
int maximumHeight;

if so, you are doing an integer division for each of the if else if conditions. change the "/4", "2/4" and "3/4" to "/4.0f", "2.0f/4.0f" and "3.0f/4.0f" to see if that fixes it, good luck!

I just looked at that site, so what i said above is probably not the problem. but, if your code is almost the same as his, what is it that you changed, because it's possible that that's what's causing the problem

are you creating the vertex buffer before or after you set the vertex colors?

are you using height for anything else in your code? like maybe the height of your window?
Braynzar Soft - DirectX Lessons & Game Programming Resources!

#3 ryan20fun   Members   -  Reputation: 1033

Like
0Likes
Like

Posted 05 January 2012 - 12:58 AM

LOL i forgot to set the D3DRS_LIGHTING flag.

is it possible to use the terrain shader from Reimer's XNA Terrain tutorial without modification ?
because last time i tried to use a simple and basic( all it did was render the object with a colour ) effect that i made in XNA it would not compile.
Never say Never, Because Never comes too soon. - ryan20fun

Disclaimer: Each post of mine is intended as an attempt of helping and/or bringing some meaningfull insight to the topic at hand. Due to my nature, my good intentions will not always be plainly visible. I apologise in advance and assure you I mean no harm and do not intend to insult anyone.




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