📄 计划.txt
字号:
1,Task & Task Manager(2006_11_21)
2,System Pointer
3,Sound
4,Singleton
5,RenderAble & RenderPool
6,FrameBuffer & FrameManager(2006_12_6)
7,FileMap
8,Fade
9,Application(2006_12_13)
10,ANMFile(2006_12_11)
11,Animation(2006_12_7)
12,Math
注意:共享的基础是文件名一致(包括大小写)
(以后会改)
// 更新
Graphics的ReaderState
IniFile的连续项读取2006_11_08
GPoint部分实用函数
粒子系统
Bubble.tga & Config
Vector2D
Common中的随机范围randomint & randomfloat2006_11_09
全局变量放到common中
输入stInputInfo中加入mouse是否移动信息
纹理管理器中纹理的锁定与解锁
新的字体CSimFont
IniFile获取索引数量(2006_11_20)
IniFile根据索引号获取索引(2006_11_20)
字体纹理大小可变,GFont数量可变(2006_11_22)
纹理支持AMF(2006_12_16)
纹理支持Mipmap(2006_12_21)
// GUI
Window(2006_11_15)
Button(2006_11_16)
Static(2006_11_16)
CheckBox(2006_11_17)
RadioGroup(2006_11_17)
Slider(2006_11_18)
GUIManager(2006_11_20)
ScrollBar(2006_11_27)
LISTBOX(2006_11_28)
EDITBOX,
COMBOBOX,
// 动画Frame
Frames & FrameManager(2006_12_6)
Animation(2006_12_7)
AniFile(2006_12_11)
纹理动画支持AMF
// 3D(2006_12_20开始)
3D基础(2006_12_20)
vetex buffer & index buffer(2006_12_21)
三角条(带)立方体和简单灯光(2006_12_25)
摄像机Camera(2006_12_27)
简单高度图Heightmap(2006_12_29)
-------------元旦了-------------------
高度图支持无限地形(2007_1_2)
Frustum(2006_1_3)
使用移动图分割场景(2006_1_5)
场景剔除与显示(2006_1_7)
控制摄像机在高度图上无限移动并自动剔除场景(2006_1_8)
分割场景后边界显示错误(2006_1-9)
LOD6 & LOD7的显示问题
LOD2 & LOD1的显示问题(2006_1_15, 高度图边界连接问题)
修正边界并保存高度图(2006_1_15)
高度计算错误(2006_1_15)
纹理过度(2006_1_23)
纹理边界D3DTADDRESS_CLAMP(2006_1_25)
天空盒Skybox(2006_1_25)
console
添加高精度计时CHTimer(2006_2_22)
地形渲染优化(2006_2_22)
体积雾(开始结束位置还要调整)(2006_2_23)
3DTree & Plant(2006_2_25)
MS3DLoader(2007_3_6)
数学库(2007_3_9)
节点(2007_3_12)
WOW水纹理(2007_3_12)
改变地形生成方式, 单层纹理改为双层纹理, 速度大幅提高(2007_3_16)
-------------地形改进记录-------------------
1, 一开始使用单层纹理, 由于需要实现纹理过渡, 预先渲染好过渡纹理.
并记录每块Tile对应的纹理, 渲染地形的跟据对应的纹理切换渲染.
由于需要频繁切换纹理, 速度非常慢(100左右FPS).
2, LOD3, LOD5, LOD7不是过渡LOD, 可方便使用triangle list渲染(其它LOD使用FAN),
且LOD3中大部分是非过渡纹理, 这样我们把可triangle list渲染, 且非过渡纹理先存
放到一个数组, 集中渲染, 这部分占渲染Tile总数的40%左右, 速度已有较大提高
(测得FPS180左右)
3, 记录是否改变位置或方向, 不改变的直接渲染, 速度(FPS240左右,
此速度是静止时录得的峰值)
4, 不使用预先渲染过渡纹理的方法, 直接使用多层纹理, 在此程序中, 使用两层纹理
分别放在stage0和stage1中渲染, 纹理间的过渡使用顶点中DIFFUSE中的alpha值,
D3D会在顶点间进行alpha插值. DIFFUSE中的RGB值则用作光照亮度(可节省一层stage)
DIFFUSE的具体值可在读取高度图时生成.(FPS峰值为430, 还解决了纹理间的小裂隙问题)
5, 当前是根据观察者为中心点渲染地形的, 想改为以中心点左下角的高度图的X轴起点,
Z轴起点进行参照点渲染, 这样就可以只记录顶点值, 人物行动时改变索引值即可渲染.
速度应有提高, 但由于地形是无限循环的, 可视区域可能是垮象限的, 这样参照点就有
多个, 因此该方法并不可行.
6, 当有改变时才更新Frustum等信息(FPS峰值为530)
-------------其它-------------------
加载X模型(2007_3_19)
X skin mesh(2007_3_19)
主角Player(2007_3_20)
第三人称摄像机(2007_3_20)
实现换枪(2007_3_20)
节点调整工具(2007_3_21)
节点指针管理(2007_3_22)
游戏控制台(2007_3_22)
实现游戏运行过程中调出控制台动态修改游戏数据(2007_3_22)
-------------------
修改数据的方法
1, 硬编码, 需要编译
2, 静态读配置文件, 需要重启游戏
3, 动态读配置文件, 需要在文件中改数据并保存
4, 调出控制台输入命令(不仅是改数量, 还可以改变操作了, 包括操作的先后(脚本的另一种形式).
-------------------
当前的模型数据与节点位置是绑定的, 这是一种很差的设计方式, 即无法共享模型数据.
必须改进, 改进原则是"分离模型数据与节点位置, 共享模型数据"
初步设计思想为:
1, 新增加加载器基类(引用计数, 虚函数主要为Load, Render, Release, 无需要Update数据, 暂不设计自动加载与释放)
2, XLoader, XSkinLoader, MS3DLoader, 继承于基类加载器.
3, 模型管理器管理静态模型, 骨骼动画模型, 共享模型数据.
4, 一个Static Model类, 一个SkinMesh类, 分别继承于节点类, 用句柄方式与模型管理器交互.
5, 问题: 在管理器中获取的指针会退化为基类指针, 需强制转换, 基类要求保存加载类型.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -