(VS 2008 C++) DirectX9 DrawPrimitiveUp problems [SOLVED]

Started by
7 comments, last by MichaelJackson 16 years ago
This is my custom vertex - D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1 which creates struct TLVertex { float X,Y,Z,Rhw; int Colour; float tU, tV; }; TLVertex Tlv[4]; For some odd reason, this piece of code wont draw - NOTE: This code DOES NOT generate any errors! (All I'm trying to draw is a textured square!) //Do validate device routine if(ValidateDevice != S_OK) { MessageBox(0,"Problem with validating the device.","Error",0); return 0; } d3ddevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 1 ); if FAILED(d3ddevice->BeginScene()) { MessageBox(0,"Failed to begin the scene!","Wow its your unlucky day",0); return 0; } Tlv[0].X = 0; Tlv[1].X = Tlv[0].X + 32; Tlv[2].X = Tlv[0].X; Tlv[3].X = Tlv[1].X; Tlv[0].Y = 0; Tlv[1].Y = Tlv[0].Y; Tlv[2].Y = Tlv[0].Y + 32; Tlv[3].Y = Tlv[2].Y; for(int i = 0;i<=3,++i) { Tlv.Colour = -1; Tlv.Rhw = 1; } Tlv[0].tU = 0; Tlv[0].tV = 0; Tlv[1].tU = 1; Tlv[1].tV = 0; Tlv[2].tU = 0; Tlv[2].tV = 1; Tlv[3].tU = 1; Tlv[3].tV = 1; if (TextureNo != LastTexture) { d3ddevice->SetTexture(0,(LPDIRECT3DTEXTURE9)TextureData[TextureNo]); //Since TextureData is an int pointer. LastTexture = TextureNo; } d3ddevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,&Tlv[0],28); //Sizeof Tlv is 28. if FAILED(d3ddevice->EndScene()) { MessageBox(0,"EndScene failed to...end?","Error!",0); return 0; } d3ddevice->Present(NULL,NULL,NULL,NULL); return 255; *PS - whats the format code to place my code in a easy to read box? Sorry for bad wording choice* [Edited by - MichaelJackson on April 1, 2008 8:40:25 PM]
Advertisement
[Edit] Hmm, never mind. What's DrawPrimitiveUP() returning?
Its not using a stream source.
Its returning -2005530516


hmmm... O_o
I didn't see a SetFVF either ..... Device->SetFVF(TLVertex);


There's an error-lookup app in the SDK that should be able to tell you what the error means. Like Cranny said, not setting the FVF is probably your problem.
OK! I solved my own problem.. OOPS.

I realsied I removed a piece of code while initiziating.

@Cranny76, I do not need to constantly call up SetFVF - but it was your advice that actually helped me solve my problem. The thing is - I restructured my code, and moved the 'Render State settings' to a different routine - I forgot to call that routine when I initialised DirectX!!

God large code sucks!
Now that I have done it - it works perfectly fine!!!

Sorry for wasting your time. A stupid mistake on my behalf.
FYI source tags would put it in a box... ala

[ source ] [/ source ]
jeeze finally some REAL help :P *lol joking*

But thank you very much!

This topic is closed to new replies.

Advertisement