⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcshadowobject.cpp

📁 国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国内还没有,所以找不到测试
💻 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 + -