TEnGinE Version-0.1 Build-7 更新日志
内部版本号 :v0.00.00.10
新增文件数 :2 个
修改文件数:5 个
变更概要
| 类别 | 内容 |
|---|---|
| 新增文件 | Tanxl_InitBase.h、Tanxl_InsertAction.cpp |
| 输入模块 | 头文件与实现分离,补充构造函数 |
| 游戏对象 | 加入组件基类 ComponmentBase |
| 着色器 | 清理废弃注释,添加版本标记 |
| 主程序 | 测试网格从 3×3 扩大到 10×10 |
一、输入处理模块拆分(头实现分离)
Build-6 中 Tanxl_InsertAction.h 将类的声明和实现全部写在了一起。Build-7 把实现部分抽离到独立的 .cpp 文件。
文件结构变化
code
Build-6:
Tanxl_InsertAction.h (声明 + 实现 全部在内)
Build-7:
Tanxl_InsertAction.h (仅声明)
Tanxl_InsertAction.cpp (实现)
Tanxl_InsertAction.h 改动点
Key_Unit 结构体
cpp
// Build-6 --- 内联默认值
struct Key_Unit
{
int GLFW_KEY{ NULL };
bool MoveToX{ false };
bool MoveToY{ false };
float MoveLen{ 0.0f };
};
// Build-7 --- 改为显式构造函数
struct Key_Unit
{
Key_Unit();
Key_Unit(int GLKEY, bool MOVX, bool MOVY, float MOVL);
int GLFW_KEY;
bool MoveToX;
bool MoveToY;
float MoveLen;
};
InsertEventBase 类
将原来内联在类声明中的构造/析构/拷贝控制函数改为仅在头文件中声明:
cpp
// Build-6 内联定义方式
InsertEventBase() {};
~InsertEventBase() {};
InsertEventBase(const InsertEventBase&) {};
// Build-7 仅声明
InsertEventBase();
~InsertEventBase();
InsertEventBase(const InsertEventBase&);
Tanxl_InsertAction.cpp 新增内容
完整实现了以下内容:
cpp
// Key_Unit 构造函数
Key_Unit::Key_Unit()
: GLFW_KEY(NULL), MoveToX(false), MoveToY(false), MoveLen(0.0f) {}
Key_Unit::Key_Unit(int GLKEY, bool MOVX, bool MOVY, float MOVL)
: GLFW_KEY(GLKEY), MoveToX(MOVX), MoveToY(MOVY), MoveLen(MOVL) {}
// 单例获取
InsertEventBase& InsertEventBase::GetInsertBase() {
InsertEventBase* IEB = new InsertEventBase;
return *IEB;
}
// 注册按键事件
void InsertEventBase::RegistEvent(Key_Unit KU) {
KeyEventS.push_back(KU);
}
// 帧循环中检测输入
void InsertEventBase::GetInsert(GLFWwindow* window, float* MoveX, float* MoveY) {
for (int i = 0; i < KeyEventS.size(); i++) {
if (glfwGetKey(window, KeyEventS.at(i).GLFW_KEY) == GLFW_PRESS) {
if (KeyEventS.at(i).MoveToX)
*MoveX += KeyEventS.at(i).MoveLen;
if (KeyEventS.at(i).MoveToY)
*MoveY += KeyEventS.at(i).MoveLen;
std::cout << "BUTTON PUSHED x_" << *MoveX << "y_" << *MoveY << std::endl;
}
}
}
GetInsert() 相比 Build-6 多了一行坐标输出日志,方便调试时观察按键响应。
二、游戏对象加入组件基类
Tanxl_GameObject.h 从空类扩展为带组件容器的基础类:
cpp
// Build-6
class GameObjectBase { };
// Build-7
class ComponmentBase
{
virtual void SpecialAbility() = 0; // 纯虚函数接口
};
class GameObjectBase
{
private:
std::vector<ComponmentBase*> CMB; // 组件列表
};
目前 ComponmentBase 只定义了一个纯虚函数 SpecialAbility() 作为占位。后续可以在此基础上扩展渲染组件、物理碰撞组件等具体实现。
三、新增初始化模块
新增文件 Tanxl_InitBase.h,当前为空壳:
cpp
//_VERSION_0_1_ UPDATE LOG
// LAST_UPDATE 2022-05-04 21:19
// 基础版本
该模块用于对所有基类进行初始化。目前仅创建文件,尚未写入实际内容。
四、顶点着色器清理
StatevertShader.glsl 两处改动:
| 项目 | Build-6 | Build-7 |
|---|---|---|
| 文件头部 | 无版本信息 | 添加 _VERSION_0_1 注释头 |
| 废弃注释 | 第21-26行有旧单网格测试代码 | 该段注释下移至第56-67行 |
着色器的实际渲染逻辑没有变化,只是调整了注释的位置和添加了版本标记。
五、主程序测试参数调整
cpp
// Build-6
GSB->SetState(3, 3);
// Build-7
GSB->SetState(10, 10);
测试网格从 3×3 扩大到 10×10,用于验证更大规模下的网格渲染表现。
Wild_Chicken_Programing /// 2022-05-04 22:10