#include "stdafx.h" #include ".\kprimitivetile.h" #include "KRenderDevice.h" #include "KRenderDeviceDX.h" KTilePrimitive::KTilePrimitive(void) { memset(m_Verts, 0, sizeof(m_Verts)); memset(&m_Min, 0, sizeof(m_Min)); memset(&m_Max, 0, sizeof(m_Max)); } KTilePrimitive::~KTilePrimitive(void) { memset(m_Verts, 0, sizeof(m_Verts)); memset(&m_Min, 0, sizeof(m_Min)); memset(&m_Max, 0, sizeof(m_Max)); } void KTilePrimitive::SetupVerts(STileVertex min, STileVertex max) { m_Verts[0] = min; m_Verts[1] = max; m_Verts[2] = max; m_Verts[3] = min; m_Verts[1].y = min.y; //m_Verts[1].z = min.z; m_Verts[1].v = min.v; m_Verts[3].y = max.y; //m_Verts[3].z = max.z; m_Verts[3].v = max.v; //for(int i = 0; i < 4; i++) //{ //m_Verts[i].color = 0xffffffff; //} m_Min = min; m_Max = max; } void KTilePrimitive::Render( KViewportObject *viewport, class K3DRenderDevice *dev, bool bUseAccum) { //K3DMatrix worldview; //K3DMatrixIdentity( worldview ); //K3DMatrixMultiply( &world, m_pTransform, &m_RootMat ); //dev->SetTransform( K3DRenderDevice::TS_WORLD, &world ); //dev->SetTransform( K3DRenderDevice::TS_VIEW, &world ); //dev->SetTransformIdentity(K3DRenderDevice::TS_WORLD); //dev->SetTransformIdentity(K3DRenderDevice::TS_VIEW); //((K3DRenderDeviceDX*) dev)->setToDefaultRenderState(); dev->SetRenderState( K3DRenderDevice::RS_DEFAULT ); dev->EnableLightEffect(false); //dev->EnableLightEffect(true); dev->SetCullMode(K3DRenderDevice::KCM_CCW); //dev->SetCullMode(K3DRenderDevice::KCM_CW); //dev->SetCullMode(K3DRenderDevice::KCM_NONE); IDirect3DDevice9* pD3dDevice = ((K3DRenderDeviceDX*) dev)->GetD3DDevice(); pD3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); pD3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); pD3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); pD3dDevice->SetRenderState( D3DRS_COLORVERTEX, TRUE ); pD3dDevice->SetRenderState( D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1 ); dev->SetTextureFactor(0xffffffff); dev->SetTexture(0, m_spTexture); //dev->DrawTriangleFan(D3DFVF_XYZ | D3DFVF_TEX1, m_Verts, 4, sizeof(STileVertex)); dev->DrawTriangleFan(D3DFVF_XYZW | D3DFVF_DIFFUSE | D3DFVF_TEX1, m_Verts, 4, sizeof(STileVertex)); //dev->DrawTriangleFan(D3DFVF_XYZRHW | D3DFVF_TEX1, m_Verts, 4, sizeof(STileVertex)); }