# Vertex Buffer Diffuse Colouring Not Working

This topic is 2842 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

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; 

 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 ); 

##### Share on other sites
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?

##### Share on other sites
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.

• ### Game Developer Survey

We are looking for qualified game developers to participate in a 10-minute online survey. Qualified participants will be offered a \$15 incentive for your time and insights. Click here to start!

• 11
• 23
• 39
• 75