DirectX DrawPrimitive UV's

BlitzMax Forums/BlitzMax Programming/DirectX DrawPrimitive UV's

TartanTangerine (was Indiepath)(Posted 2005) [#1]
Anyone know the correct way to specify the UV for each vertex when creating a DX7 Primitive?

Basically I've managed to texture a Blitzmax Polygon but I want to be able to set the UV for each vertex as I create the poly.

device.DrawPrimitive(D3DPT_TRIANGLEFAN,D3DFVF_XYZ|D3DFVF_TEX1,xyzuv,segs,0)	


According to Marks code I think it should be in the order of :-
xyzuv#[0] = xpos#
xyzuv#[1] = ypos#
xyzuv#[2] = zpos#
xyzuv#[3] = u#
xyzuv#[4] = v#

Since we are using "Flexible Vertex Formats" should I be using D3DFVF_TEX2?


TartanTangerine (was Indiepath)(Posted 2005) [#2]
Ignore me, I worked it out...


Beaker(Posted 2005) [#3]
Care to share?


TMyke(Posted 2005) [#4]
if that can help you:

for a single polygon,

struct VERTEX
{
D3DXVECTOR3 p; // D3DFVF_XYZ
DWORD d; // D3DFVF_DIFFUSE
float u1, v1; // D3DFVF_TEX1;
static const DWORD FVF;
};

VERTEX *v;
v[0].p = D3DXVECTOR3(-fWidth, -fHeight, 0.0f );
v[0].d = dwColor;
v[0].u1 = 0.0f;
v[0].v1 = 1.0f;
v[1].p = D3DXVECTOR3(-fWidth, fHeight, 0.0f );
v[1].d = dwColor;
v[1].u1 = 0.0f;
v[1].v1 = 0.0f;
v[2].p = D3DXVECTOR3( fWidth, -fHeight, 0.0f );
v[2].d = dwColor;
v[2].u1 = 1.0f;
v[2].v1 = 1.0f;
v[3].p = D3DXVECTOR3( fWidth, fHeight, 0.0f );
v[3].d = dwColor;
v[3].u1 = 1.0f;
v[3].v1 = 0.0f;



VERTEXSET = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1
EL_d3dDev9.SetTexture( 0, Texture )
EL_d3dDev9.SetFVF( VERTEXSET )
EL_d3dDev9.DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 )


Width two textures (multitexturing)

struct VERTEX
{
D3DXVECTOR3 p; // D3DFVF_XYZ
DWORD d; // D3DFVF_DIFFUSE
float u1, v1; // D3DFVF_TEX1;
float u2, v2; // D3DFVF_TEX2;
static const DWORD FVF;
};
VERTEX *v;
v[0].p = D3DXVECTOR3(-fWidth, -fHeight, 0.0f );
v[0].d = dwColor;
v[0].u1 = 0.0f;
v[0].v1 = 1.0f;
v[0].u2 = 0.0f;
v[0].v2 = 1.0f;
v[1].p = D3DXVECTOR3(-fWidth, fHeight, 0.0f );
v[1].d = dwColor;
v[1].u1 = 0.0f;
v[1].v1 = 0.0f;
v[1].u2 = 0.0f;
v[1].v2 = 0.0f;
v[2].p = D3DXVECTOR3( fWidth, -fHeight, 0.0f );
v[2].d = dwColor;
v[2].u1 = 1.0f;
v[2].v1 = 1.0f;
v[2].u2 = 1.0f;
v[2].v2 = 1.0f;
v[3].p = D3DXVECTOR3( fWidth, fHeight, 0.0f );
v[3].d = dwColor;
v[3].u1 = 1.0f;
v[3].v1 = 0.0f;
v[3].u2 = 1.0f;
v[3].v2 = 0.0f;



VERTEXSET = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX2
EL_d3dDev9.SetTexture( 0, Texture1 )
EL_d3dDev9.SetTexture( 1, Texture1 )
EL_d3dDev9.SetFVF( VERTEXSET )
EL_d3dDev9.DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 )


TartanTangerine (was Indiepath)(Posted 2005) [#5]
I will when I've tidied the code, basically it allows you to texture a poly with any image using:-

DrawTexturedPoly(Image:TImage,xyzuv#[])



TartanTangerine (was Indiepath)(Posted 2005) [#6]
I've posted a demo with it working : http://www.blitzbasic.com/Community/posts.php?topic=51042