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

📄 nvmesh.h

📁 游戏编程精华02-含有几十个游戏编程例子
💻 H
字号:
/******************************************************************************

  Copyright (C) 1999, 2000 NVIDIA Corporation
  This file is provided without support, instruction, or implied warranty of any
  kind.  NVIDIA makes no guarantee of its fitness for a particular purpose and is
  not liable under any circumstances for any damages or loss whatsoever arising
  from the use or inability to use this file or items derived from it.
  
    Comments:
    
      
        
******************************************************************************/
#ifndef __NVMESH_H
#define __NVMESH_H

#include "nvinc.h"
#include <nvdevice.h>

namespace nv_objects
{

class NVBounds
{
public:
	Transform(const D3DXMATRIX* pMatrix);
	D3DXVECTOR3 m_vecCenter;
	D3DXVECTOR3 m_vecMinExtents;
	D3DXVECTOR3 m_vecMaxExtents;
	float m_fRadius;
};

// Base frame
class NVMesh
{
public:
	NVMesh(TCHAR* strName = _T("NVMesh") );
	~NVMesh();

	virtual HRESULT InitMaterials( NVDevice* pd3dDevice, LPD3DXBUFFER pMtrlBuffer );

	// Rendering
    virtual HRESULT Render( NVDevice* pd3dDevice, 
		            BOOL bDrawOpaqueSubsets = TRUE,
		            BOOL bDrawAlphaSubsets = TRUE );

	// Mesh access
    virtual LPD3DXMESH GetSysMemMesh() { return m_pSysMemMesh; }
    virtual LPD3DXMESH GetLocalMesh()  { return m_pLocalMesh; }
	virtual const NVBounds* GetBounds() const { return &m_Bounds; }

	// Rendering options
	virtual HRESULT SetFVF( NVDevice* pd3dDevice, DWORD dwFVF );
	virtual HRESULT RenderPart(NVDevice* pDevice, DWORD dwPart);
	virtual HRESULT SetVertexShader(DWORD dwVertexShader) { m_dwVertexShader = dwVertexShader; return S_OK;}
	virtual HRESULT SetTexture(LPDIRECT3DBASETEXTURE8 pTexture) { m_pTexture = pTexture; return S_OK; }
	virtual HRESULT GetRenderInfo();
	virtual HRESULT ComputeBounds();
	
	// Initializing
    virtual HRESULT RestoreDeviceObjects( NVDevice* pd3dDevice );
    virtual HRESULT InvalidateDeviceObjects();

	// Creation/destruction
	virtual HRESULT Create( NVDevice* pd3dDevice, const std::string& strFilename );
	virtual HRESULT Create( NVDevice* pd3dDevice, LPDIRECTXFILEDATA pFileData );
	virtual HRESULT Destroy();

	TCHAR               m_strName[512];
    LPD3DXMESH          m_pSysMemMesh;    // SysSem mesh, lives through resize
    LPD3DXMESH          m_pLocalMesh;     // Local mesh, rebuilt on resize
    
    DWORD               m_dwNumMaterials; // Materials for the mesh
    D3DMATERIAL8*       m_pMaterials;
    LPDIRECT3DTEXTURE8* m_pTextures;

	DWORD					m_dwVertexShader;
	LPDIRECT3DBASETEXTURE8	m_pTexture;

	// Attributes for rendering parts of the model
	LPD3DXBUFFER		m_pMeshAdjacency;

	LPDIRECT3DVERTEXBUFFER8 m_pVB;
	LPDIRECT3DINDEXBUFFER8 m_pIB;

	DWORD				m_dwAttributes;
	DWORD				m_dwStride;
	D3DXATTRIBUTERANGE*	m_pAttributeTable;	// Attributes

	std::string			m_strMeshPath;

	NVBounds m_Bounds;

};


}; // nv_objects

#endif // __NVDEVICE_H
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -