📄 mcshadowobject.cpp
字号:
// MCShadowObject.cpp: implementation of the CMCShadowObject class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MCShadowObject.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMCShadowObject::CMCShadowObject()
{
InitObject();
}
CMCShadowObject::~CMCShadowObject()
{
ClearObject();
}
VOID CMCShadowObject::InitObject()
{
m_nVertexCount = 0;
m_nFaceCount = 0;
m_pVertex = NULL;
m_pFace = NULL;
m_pTexture = NULL;
m_pVertexBuffer = NULL;
m_pIndexBuffer = NULL;
}
VOID CMCShadowObject::ClearObject()
{
SAFE_DELETE_ARRAY(m_pVertex);
SAFE_DELETE_ARRAY(m_pFace);
ReleaseVIB();
}
HRESULT CMCShadowObject::CreateVIB()
{
//------------------------------------------------------------------------------------------//
// Index Buffer
//------------------------------------------------------------------------------------------//
if(FAILED( g_pApp->GetD3dDevice()->CreateIndexBuffer( m_nFaceCount * sizeof(WORD)*3, 0, D3DFMT_INDEX16,
D3DPOOL_DEFAULT, &m_pIndexBuffer,NULL)))
{
OutputDebugString("\n[角菩] CMCObjMesh::CreateIndexBuffer");
return E_FAIL;
}
WORD *pIndices=NULL;
if( FAILED( m_pIndexBuffer->Lock(0,0, (void **)&pIndices, D3DLOCK_DISCARD) ))
return E_FAIL;
for(int i=0; i<m_nFaceCount*3; i++)
pIndices[i] = (WORD)m_pFace[i];
m_pIndexBuffer->Unlock();
//------------------------------------------------------------------------------------------//
// Vertex Buffer
//------------------------------------------------------------------------------------------//
if(FAILED( g_pApp->GetD3dDevice()->CreateVertexBuffer(m_nVertexCount * sizeof(MCFVFSHADOWVERTEX),
0, MC3FVF_SHADOWVERTEX,D3DPOOL_DEFAULT, &m_pVertexBuffer, NULL) ))
{
OutputDebugString("[角菩] CMD3Mesh::CreateVertexBuffer");
return E_FAIL;
}
MCFVFSHADOWVERTEX *pVertex=NULL;
if( FAILED( m_pVertexBuffer->Lock(0,0, (void **)&pVertex, D3DLOCK_DISCARD) ))
return E_FAIL;
for( i=0; i<m_nVertexCount; i++)
{
pVertex[i].vVector = m_pVertex[i].vVector;
// pVertex[i].vNoraml = m_pVertex[i].vNoraml;
pVertex[i].Tex = m_pVertex[i].Tex;
}
if( FAILED( m_pVertexBuffer->Unlock() ) )
return E_FAIL;
return S_OK;
}
HRESULT CMCShadowObject::ReleaseVIB()
{
SAFE_RELEASE(m_pVertexBuffer);
SAFE_RELEASE(m_pIndexBuffer);
return S_OK;
}
HRESULT CMCShadowObject::Render()
{
if(!m_pTexture)
return S_OK;
if(!m_pTexture->pTexture)
return S_OK;
g_pApp->GetD3dDevice()->SetStreamSource( 0, m_pVertexBuffer, 0, sizeof(MCFVFSHADOWVERTEX) );
g_pApp->GetD3dDevice()->SetFVF( MC3FVF_SHADOWVERTEX );
g_pApp->GetD3dDevice()->SetTexture( 0, m_pTexture->pTexture );
g_pApp->GetD3dDevice()->SetIndices( m_pIndexBuffer );
if(FAILED(g_pApp->GetD3dDevice()->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, m_nVertexCount, 0, m_nFaceCount )))
return E_FAIL;
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -