最后一次更新于2007年04月21日
使用directX9.0c, vs2005sdk, hlsl 開發(fā) 環(huán)境7300GS,奔4CPU, 1024x768 0級(jí)lod 因速度可以接受所以沒有繼續(xù)做lod(不過已經(jīng)做了lod相關(guān)設(shè)計(jì)只是沒用而已) 還沒有做遮擋消除等功能, 目前實(shí)現(xiàn)了 動(dòng)態(tài)云,太陽,天空,大地,碰撞檢測.?。磳蛹?xì)節(jié)貼圖 和?。笇蛹?xì)節(jié)貼圖 在我機(jī)器環(huán)境上可以達(dá)到?。?layer)100~(1layer)250fps,下一步該實(shí)現(xiàn) 真實(shí)水,和 樹木,草,石頭,建筑,天氣效果等等... 最近寫的點(diǎn)累,每天要上班...先放著...
代碼有很強(qiáng)的靈活性, 直接繼承基類root 添加渲染對(duì)象就可以實(shí)現(xiàn)用戶自定義coding.
這是這個(gè) demo的user代碼.


使用directX9.0c, vs2005sdk, hlsl 開發(fā) 環(huán)境7300GS,奔4CPU, 1024x768 0級(jí)lod 因速度可以接受所以沒有繼續(xù)做lod(不過已經(jīng)做了lod相關(guān)設(shè)計(jì)只是沒用而已) 還沒有做遮擋消除等功能, 目前實(shí)現(xiàn)了 動(dòng)態(tài)云,太陽,天空,大地,碰撞檢測.?。磳蛹?xì)節(jié)貼圖 和?。笇蛹?xì)節(jié)貼圖 在我機(jī)器環(huán)境上可以達(dá)到?。?layer)100~(1layer)250fps,下一步該實(shí)現(xiàn) 真實(shí)水,和 樹木,草,石頭,建筑,天氣效果等等... 最近寫的點(diǎn)累,每天要上班...先放著...
代碼有很強(qiáng)的靈活性, 直接繼承基類root 添加渲染對(duì)象就可以實(shí)現(xiàn)用戶自定義coding.
這是這個(gè) demo的user代碼.
1
#pragma once
2
#include "KBCommon.h"
3
#include "KBRoot.h"
4
#include "KBWorld.h"
5
#include "KBWorldGeometry.h"
6
#include "KBFps.h"
7
using namespace KBEngine;
8
9
class CSceneWorld :public CKBWorldBase
10
{ //繼承CKBWorldBase 可以自定義渲染 如 霧的方式, 燈光 等系列渲染參數(shù)
11
public:
12
CSceneWorld(void){};
13
public:
14
~CSceneWorld(void){};
15
virtual BOOL create( TiXmlNode* section )
16
{
17
CKBWorldBase::create( section );
18
//自定義創(chuàng)建
19
return TRUE;
20
}
21
};
22
23
class CSceneApplication :public CKBRoot
24
{
25
public:
26
CSceneApplication(void){};
27
public:
28
~CSceneApplication(void);
29
virtual BOOL createScene( TiXmlNode* section );
30
/**////鼠標(biāo)控制
31
virtual void ProcessMouse( void );
32
};
33
34
35
36
#include "SceneApplication.h"
37
#include "KBSkyGeometry.h"
38
39
CKBRenderObject* m_worldGeo = NULL;
40
CKBRenderObject* g_fps = NULL;
41
CKBRenderObject* skyDomeModel ;
42
CSceneApplication::~CSceneApplication(void){
43
SAFE_DELETE( m_worldGeo );
44
SAFE_DELETE( g_fps );
45
SAFE_DELETE( skyDomeModel );
46
};
47
BOOL CSceneApplication::createScene( TiXmlNode* section )
48
{
49
//自定義創(chuàng)建
50
g_fps = new CKBFps();
51
g_pWorld = new CSceneWorld();
52
m_worldGeo = new CKBWorldGeometry();
53
skyDomeModel = new CKBSkyDomeModel();
54
g_pTextHelper->CreateFont( "Arial" );
55
g_pWorld->create( section );
56
//創(chuàng)建天空
57
((CKBSkyDomeModel*)skyDomeModel)->create( section );
58
59
((CKBWorldGeometry*)m_worldGeo)->create( CKBD3DDevice::getSingleton().getDevice() , g_pWorld->getKBFrustum() , section );
60
g_pWorld->getKBCamera()->setPosY(((CKBWorldGeometry*)m_worldGeo)->collision( g_pWorld->getKBCamera()->GetEye()));
61
addToRender( g_fps );
62
addToRender( skyDomeModel );
63
addToRender( m_worldGeo );
64
65
return TRUE;
66
}
67
68
void CSceneApplication::ProcessMouse( void )
69
{
70
//輸入輸出部分這是暫時(shí)的,將來會(huì)使用 Dxinput接口
71
CKBRoot::ProcessMouse();
72
if( GetAsyncKeyState( 'A' ) )
73
g_pWorld->getKBCamera()->MoveZ( 3.0f ,((CKBWorldGeometry*)m_worldGeo)->collision( g_pWorld->getKBCamera()->GetEye()) );
74
if( GetAsyncKeyState( 'Z' ) )
75
g_pWorld->getKBCamera()->MoveZ( -3.0f ,((CKBWorldGeometry*)m_worldGeo)->collision( g_pWorld->getKBCamera()->GetEye()));
76
}
77
78
79
//貼圖 下面的效果都是 ?。磳蛹?xì)節(jié)貼圖的樣子
#pragma once 2
#include "KBCommon.h" 3
#include "KBRoot.h" 4
#include "KBWorld.h" 5
#include "KBWorldGeometry.h" 6
#include "KBFps.h" 7
using namespace KBEngine; 8

9
class CSceneWorld :public CKBWorldBase 10

{ //繼承CKBWorldBase 可以自定義渲染 如 霧的方式, 燈光 等系列渲染參數(shù) 11
public: 12

CSceneWorld(void){}; 13
public: 14

~CSceneWorld(void){}; 15
virtual BOOL create( TiXmlNode* section ) 16

{ 17
CKBWorldBase::create( section ); 18
//自定義創(chuàng)建 19
return TRUE; 20
} 21
}; 22

23
class CSceneApplication :public CKBRoot 24

{ 25
public: 26

CSceneApplication(void){}; 27
public: 28
~CSceneApplication(void); 29
virtual BOOL createScene( TiXmlNode* section ); 30

/**////鼠標(biāo)控制 31
virtual void ProcessMouse( void ); 32
}; 33

34

35

36
#include "SceneApplication.h" 37
#include "KBSkyGeometry.h" 38

39
CKBRenderObject* m_worldGeo = NULL; 40
CKBRenderObject* g_fps = NULL; 41
CKBRenderObject* skyDomeModel ; 42

CSceneApplication::~CSceneApplication(void){ 43
SAFE_DELETE( m_worldGeo ); 44
SAFE_DELETE( g_fps ); 45
SAFE_DELETE( skyDomeModel ); 46
}; 47
BOOL CSceneApplication::createScene( TiXmlNode* section ) 48

{ 49
//自定義創(chuàng)建 50
g_fps = new CKBFps(); 51
g_pWorld = new CSceneWorld(); 52
m_worldGeo = new CKBWorldGeometry(); 53
skyDomeModel = new CKBSkyDomeModel(); 54
g_pTextHelper->CreateFont( "Arial" ); 55
g_pWorld->create( section ); 56
//創(chuàng)建天空 57
((CKBSkyDomeModel*)skyDomeModel)->create( section ); 58

59
((CKBWorldGeometry*)m_worldGeo)->create( CKBD3DDevice::getSingleton().getDevice() , g_pWorld->getKBFrustum() , section ); 60
g_pWorld->getKBCamera()->setPosY(((CKBWorldGeometry*)m_worldGeo)->collision( g_pWorld->getKBCamera()->GetEye())); 61
addToRender( g_fps ); 62
addToRender( skyDomeModel ); 63
addToRender( m_worldGeo ); 64

65
return TRUE; 66
} 67

68
void CSceneApplication::ProcessMouse( void ) 69
{ 70
//輸入輸出部分這是暫時(shí)的,將來會(huì)使用 Dxinput接口 71
CKBRoot::ProcessMouse(); 72
if( GetAsyncKeyState( 'A' ) ) 73
g_pWorld->getKBCamera()->MoveZ( 3.0f ,((CKBWorldGeometry*)m_worldGeo)->collision( g_pWorld->getKBCamera()->GetEye()) ); 74
if( GetAsyncKeyState( 'Z' ) ) 75
g_pWorld->getKBCamera()->MoveZ( -3.0f ,((CKBWorldGeometry*)m_worldGeo)->collision( g_pWorld->getKBCamera()->GetEye())); 76
} 77

78

79
//貼圖 下面的效果都是 ?。磳蛹?xì)節(jié)貼圖的樣子 



chenxiangfeicvf@163.com