Files
Leviathan/Client/Game/engine/Renderer/KPrimitiveTile.cpp
T
2026-06-01 12:46:52 +02:00

79 lines
2.3 KiB
C++

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