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


使用directX9.0c, vs2005sdk, hlsl 開(kāi)發(fā) 環(huán)境7300GS,奔4CPU, 1024x768 0級(jí)lod 因速度可以接受所以沒(méi)有繼續(xù)做lod(不過(guò)已經(jīng)做了lod相關(guān)設(shè)計(jì)只是沒(méi)用而已) 還沒(méi)有做遮擋消除等功能, 目前實(shí)現(xiàn)了 動(dòng)態(tài)云,太陽(yáng),天空,大地,碰撞檢測(cè). 4層細(xì)節(jié)貼圖 和 8層細(xì)節(jié)貼圖 在我機(jī)器環(huán)境上可以達(dá)到 (8layer)100~(1layer)250fps,下一步該實(shí)現(xiàn) 真實(shí)水,和 樹(shù)木,草,石頭,建筑,天氣效果等等... 最近寫(xiě)的點(diǎn)累,每天要上班...先放著...
代碼有很強(qiáng)的靈活性, 直接繼承基類(lèi)root 添加渲染對(duì)象就可以實(shí)現(xiàn)用戶(hù)自定義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í)的,將來(lái)會(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
//貼圖 下面的效果都是 4層細(xì)節(jié)貼圖的樣子

2

3

4

5

6

7

8

9

10


11

12


13

14


15

16


17

18

19

20

21

22

23

24


25

26


27

28

29

30


31

32

33

34

35

36

37

38

39

40

41

42


43

44

45

46

47

48


49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69


70

71

72

73

74

75

76

77

78

79




chenxiangfeicvf@163.com