當前位置:編程學習大全網 - 源碼下載 - 新西蘭商家源代碼

新西蘭商家源代碼

這個源碼應該有桌面類(桌子),球類(球體),遊戲類等等。我用C++

#pragma once (Table.h)

# endif//_ MSC _ VER & gt;1000

#包含“Base.h”

# define MESH _ d 3d VF _ custom vertex(d 3d VF _ XYZ | d 3d VF _ NORMAL | d 3d VF _ tex 1)

可選擇的類:公共數據庫

{

公共:

DWORD Render();

CTable(lpdirect 3d device 8 pd3d device,LPSTR pFilename);

virtual ~ CTable();

lpd 3 dx mesh GetMeshTablePointer();

私人:

void transform table();

lpdirect 3d device 8m _ pd3d device;

DWORD m _ dwNumMaterials

lpd 3 dx mesh m _ pMeshTable;

d3d material 8 * m _ pMeshTableMaterials;

lpdirect 3d texture 8 * m _ pMeshTableTextures;

};#endif

#包含“table . h”(table . CPP)

CTable::CTable(lpdirect 3d device 8 pd3d device,LPSTR pFilename)

{

lpd 3 dx buffer pMaterialsBuffer = NULL;

lpd 3 dx mesh pMeshTable = NULL;

m _ pD3DDevice = pD3DDevice

if(FAILED(d 3 dxloadmeshfromx(pFilename,D3DXMESH_MANAGED,m_pD3DDevice,NULL,

& amppMaterialsBuffer & amp;m _ dwNumMaterials & amp;pMeshTable)))

{

m _ pMeshTable = NULL

m _ pMeshTableMaterials = NULL

m _ pMeshTableTextures = NULL

log error(" & lt;李& gt表格網格“%s”未能加載”,pFilename);

返回;

}

d3dx material * mat materials =(d3dx material *)pMaterialsBuffer-& gt;get buffer pointer();

//創建兩個數組。壹個保存材質,壹個保存紋理

m _ pMeshTableMaterials = new d3d material 8[m _ dwNumMaterials];

m _ pMeshTableTextures = new lpdirect 3d texture 8[m _ dwNumMaterials];

for(DWORD I = 0;我& ltm _ dwNumMaterialsi++)

{

//復制材料

m _ pMeshTableMaterials[I]= mat materials[I]. matd 3d;

//設置材質的環境顏色(D3DX不會這樣做)

m_pMeshTableMaterials[i].ambient = m _ pMeshTableMaterials[I]。彌漫;

d3d color value rgbaSpecular = { 0.0f,0.0f,0.0f,0.0f };

m_pMeshTableMaterials[i].鏡面= rgbaSpecular

m_pMeshTableMaterials[i].功率= 50.0f

//創建紋理

char緩沖區[255];

sprintf(buffer," textures/%s ",matMaterials[i]。pTextureFilename);

if(失敗(D3DXCreateTextureFromFile(m _ pd3d device,

緩沖區。m_pMeshTableTextures[i])))

{

m _ pMeshTableTextures[I]= NULL;

}

}

//完成了素材緩沖,所以釋放它

safe release(pMaterialsBuffer);

//確保為網格設置了法線

pMeshTable-& gt;CloneMeshFVF(D3DXMESH_MANAGED,MESH _ D3DFVF _ CUSTOMVERTEX,m_pD3DDevice,& ampm _ pMeshTable);

safe release(pMeshTable);

//d3dxcomputernormals(m _ pMesh);

log info(" & lt;李& gt網格“%s”加載正常”,pFilename);

}

可檢測的::~可檢測的()

{

safe delete(m _ pMeshTableMaterials);

if(m_pMeshTableTextures!=空)

{

for(DWORD I = 0;我& ltm _ dwNumMaterialsi++)

{

if(m_pMeshTableTextures[i])

safe release(m _ pMeshTableTextures[I]);

}

}

safe delete(m _ pMeshTableTextures);

safe release(m _ pMeshTable);

log info(" & lt;李& gt表網毀OK”);

}

DWORD CTable::Render()

{

transform table();

if(m_pMeshTable!=空)

{

for(DWORD I = 0;我& ltm _ dwNumMaterialsi++)

{

m _ pd3d device-& gt;set material(& amp;m _ pMeshTableMaterials[I]);

m _ pd3d device-& gt;SetTexture(0,m _ pMeshTableTextures[I]);

m _ pMeshTable-& gt;draw subset(I);

}

返回m _ pMeshTable-& gt;GetNumFaces();

}

其他

返回0;

}

lpd 3 dx mesh CTable::GetMeshTablePointer()

{

返回m _ pMeshTable

}

void CTable::TransformTable()

{

D3DXMATRIX matWorld

d3dxmatrix translation(& amp;matWorld,0,0,0);

m _ pd3d device-& gt;SetTransform(D3DTS_WORLD,& ampmatWorld);

}

(Sphere.h)

#如果!已定義(AFX _ SPHERE _ H _ _ fc 705 F3 b _ 568 e _ 4973 _ B608 _ b8f 7700 d9 ECE _ _ INCLUDED _)

# define AFX _ SPHERE _ H _ _ fc 705 F3 b _ 568 e _ 4973 _ B608 _ b8f 7700 d9 ECE _ _ INCLUDED _

# if _ MSC _ VER & gt;1000

#雜註壹次

# endif//_ MSC _ VER & gt;1000

#包含“Base.h”

# define SPHERE _ d 3d VF _ custom vertex(d 3d VF _ XYZ | d 3d VF _ NORMAL | d 3d VF _ tex 1)

類CSphere:公共庫

{

私人:

結構球體_自定義頂點

{

浮點x,y,z;//頂點在三維空間中的位置

float nx,ny,NZ;//正常照明

浮屠,電視;//紋理坐標

};

結構球體狀態

{

D3DXVECTOR3 sVector//百分圖在三維空間中的位置

D3DXVECTOR3 vVector//3D空間中的速度方向

浮動v;//球體的速度

};

SPHERE _ STATE * m _ pSphereState

d3dx vector 3m _ vecSavePosition;//保存碰撞欄的球體位置

d3dx vector 3m _ vecsaveposition 2;//保存碰撞球體的球體位置

公共:

BOOL set material(d3d color value RGB diffuse,D3DCOLORVALUE rgbaAmbient,

D3DCOLORVALUE rgbaSpecular,D3DCOLORVALUE rgbaEmissive,float rPower);

BOOL SetTexture(const char * szTextureFilePath);

DWORD Render();

CSP here(lpdirect 3d device 8 pd3d device,int iRings=20,int I segments = 20);

void move sphere();

void MoveSphereForUser(float x,float z);

虛擬~ CSP here();

內嵌void SetSpherePosition(浮點x,浮點y,浮點z)

{

m _ pSphereState-& gt;sVector.x = x

m _ pSphereState-& gt;sVector.y = y

m _ pSphereState-& gt;sVector.z = z

};

內聯void GetSpherePosition(d3dx vector 3 & amp;vecSpherePos)

{

vecSpherePos = m _ pSphereState-& gt;斯維特;

};

內聯void GetSavedSpherePosition(d3dx vector 3 & amp;vecSavedSpherePos)

{

vecSavedSpherePos = m _ vecSavePosition;

};

內聯void getsavedsphereposition 2(d3dx vector 3 & amp;vecSavedSpherePos)

{

vecSavedSpherePos = m _ vecsaveposition 2;

};

內嵌void SaveSpherePosition()

{

m _ vecSavePosition = m _ pSphereState-& gt;斯維特;

};

內嵌void SaveSpherePosition2()

{

m _ vecsaveposition 2 = m _ pSphereState-& gt;斯維特;

};

內聯void矛盾Zv()

{

m _ pSphereState-& gt;vvector . z =-m _ pSphereState-& gt;vVector.z

};

內嵌void矛盾Xv()

{

m _ pSphereState-& gt;vvector . x =-m _ pSphereState-& gt;vVector.x

};

void MirrorVAoubtAxis(d3dx vector 3 & amp;n);

內嵌void ReduceSphereVelocity(浮動百分比)

{

m _ pSphereState-& gt;v = m _ pSphereState-& gt;v *百分比;

};

內聯浮點CheckSphereEnergy()

{

返回m _ pSphereState-& gt;五;

};

內嵌void SetSphereVelocityDir(const d3dx vector 3 & amp;vDir)

{

m _ pSphereState-& gt;vVector = vDir

};

內嵌void SetSphereVelocity(const float & amp;速度)

{

m _ pSphereState-& gt;v =速度;

};

內嵌void GetSphereVelocityDir(d3dx vector 3 & amp;vDir)

{

vDir = m _ pSphereState-& gt;vVector

};

內聯浮點GetSphereVelocity()

{

返回m _ pSphereState-& gt;五;

};

內聯void SetSphereStateToFalse()

{

m _ bssphereinuse = FALSE;

};

內嵌void SetSphereStateToTrue()

{

m _ bssphereinuse = TRUE;

};

內聯BOOL GetSphereState()

{

返回m _ bSphereInUse

};

void SetSphereVelocityAt _ Y _ negative axis();

內聯浮點GetSpherePosAt_Y_Axis()

{

返回m _ pSphereState-& gt;sVector.y

};

私人:

BOOL CreateIndexBuffer();

BOOL update vertices();

BOOL CreateVertexBuffer();

void transform sphere();

void TransformSphereForUser();

void UpdateSpherePosition();

void FrictionReduseVelocity();

lpdirect 3d device 8m _ pd3d device;

lpdirect 3d vertexbuffer 8m _ pVertexBuffer;

lpdirect 3d texture 8m _ p texture;

d 3d material 8m _ mat material;

lpdirect 3d index buffer 8m _ pindex buffer;

int m _ iRings

int m _ iSegments

float m _ fTotalDis

d3dx vector 3m _ vecSphereRotationAxis;

BOOL m _ bSphereInUse

DWORD m _ dwNumOfVertices

DWORD m _ dwNumOfIndices

DWORD m _ dwNumOfPolygons

};#endif

  • 上一篇:如何看待xboxsn代碼中的生產日期?
  • 下一篇:如何搭建java web測試環境
  • copyright 2024編程學習大全網