当前位置: 首页 > news >正文

【V0.1B9】从零开始的2D游戏引擎开发之路

TEnGinE Version-0.1 Build-9 更新日志

发布日期:2022-05-10 01:16
内部版本号:v0.00.00.11

变更概要

类别内容
深度测试OpenGL 深度测试正式启用,支持多层次渲染
文件重命名着色器文件名简化 (State→无前缀)
新增文件Tanxl_StateControl.h(预留头文件)
网格尺寸从固定 0.2f 恢复为动态计算
地图规格默认地图从 1×1 扩展至 10×10
Z轴分层地图方块 Z=0.2,玩家方块 Z=0.1
颜色统一地图方块颜色统一为黄色系

一、深度测试系统启用(核心功能)

这是 Build-9 最具技术含量的改动——已开启深度测试功能,使引擎正式支持多图层渲染。

1.1 init() 函数新增深度配置

glEnable(GL_DEPTH_TEST); // ← 新增:启用深度测试 glDepthFunc(GL_LEQUAL); // ← 新增:设置深度比较函数 glClearColor(0.0, 0.0, 0.0, 1.0); glClearDepth(1.0f); // ← 新增:初始化深度缓冲区

1.2 display() 清屏优化

// Build-9 — 合并为单次调用 if (Clear_Function) glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
// Build-8 — 分开调用 if (Clear_Function) { glClear(GL_DEPTH_BUFFER_BIT); glClearColor(0.0, 0.0, 0.0, 1.0); glClear(GL_COLOR_BUFFER_BIT); }

1.3 mainLoop() 每帧清除深度

glClearDepth(1.0f); // ← 新增 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); // ← 合并清除
// Build-8 — 仅清除颜色缓冲 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT);

二、着色器文件重命名

操作旧文件名新文件名
重命名StatevertShader.glslvertShader.glsl
重命名StatefragShader.glslfragShader.glsl

2.1 顶点着色器核心变更

网格尺寸恢复动态计算:

float Height = 2.0f / SHeight; // ← 恢复动态计算 float Width = 2.0f / SWidth; // ← 恢复动态计算 // float Height = 0.2f; //用于单一方块移动测试 调整方块宽高 // float Width = 0.2f;
// Build-8 — 固定尺寸 float Height = 0.2f; float Width = 0.2f;

地图方块 Z 轴深度调整:

项目Build-8Build-9
地图方块 Z 坐标0.00.2

三、入口文件调整

// Build-9 GameStateBase* GSB = &GameStateBase::GetStateBase(10, 10); // 直接传参 mainLoop(GSB);
// Build-8 GameStateBase* GSB = &GameStateBase::GetStateBase(); GSB->SetState(1, 1); // 单独设置 mainLoop(GSB);
变更项Build-8Build-9
GetStateBase 参数(10, 10)
SetState 调用SetState(1, 1)已移除
默认地图尺寸1 × 110 × 10

四、新增文件

Tanxl_StateControl.h

这是一个预留的头文件,当前仅包含#pragma once防重复包含指令,为后续状态控制模块预留扩展空间。


五、影响范围总览

文件Build-8Build-9变更类型
vertShader.glsl-✅ 新增从 StatevertShader 重命名
fragShader.glsl-✅ 新增从 StatefragShader 重命名
Tanxl_StateControl.h-✅ 新增预留头文件
main.cppGetStateBase()+SetState(1,1)GetStateBase(10,10)入口参数调整
Tanxl_OpenGL_Draw.h无深度测试完整深度测试支持核心功能升级
Tanxl_GameState.h--无变化
Tanxl_GameState.cpp--无变化
TANXL_ENGINE.vcxproj旧文件引用更新文件引用项目配置同步
TANXL_ENGINE.vcxproj.filters旧文件引用更新文件引用筛选器配置同步

六、技术要点总结

深度测试工作原理

渲染顺序(从后到前): ┌─────────────────────────┐ │ 玩家方块 (Z = 0.1) │ ← 前层,可自由移动 ├─────────────────────────┤ │ 地图方块 (Z = 0.2) │ ← 后层,网格排列 └─────────────────────────┘
  • glEnable(GL_DEPTH_TEST)— 启用 OpenGL 深度测试功能
  • glDepthFunc(GL_LEQUAL)— 允许相同深度值的物体覆盖绘制
  • glClearDepth(1.0f)— 将深度缓冲区重置为最大值(最远)
  • 每帧glClear(GL_DEPTH_BUFFER_BIT \| GL_COLOR_BUFFER_BIT)— 同时清除深度和颜色缓冲

Z轴设计思路

图层Z 值说明
地图背景0.2网格方块组成的底层地图
玩家/物品0.1可移动物体,显示在地图上方

数值越小越靠前(近摄像机),确保玩家方块始终显示在地图方块之上。


Wild_Chicken_Programing///2022-05-10 01:16

http://www.jsqmd.com/news/825306/

相关文章:

  • 量子电路仿真加速器QEA的FPGA实现与优化
  • 嵌入式Linux动态引脚复用实战:RK3568 GPIO与I2C功能切换详解
  • NVM管理速记(不是官方文档不好,而是笔记更有性价比)
  • 大模型KV缓存量化技术:原理、优化与实践
  • OpenShart:开源AI智能体开发框架,简化LLM应用构建
  • 基于 YOLO11-OBB 与 LPRNet ONNX 的车牌定位识别桌面系统实践
  • 167.YOLOv8口罩检测常见问题避坑(loss为NaN/显存溢出/ONNX导出失败实战版)
  • AI智能体信用评分系统:构建可评估、可管理的多智能体协作框架
  • NomNom完整指南:No Man‘s Sky终极存档编辑器
  • 基于CRICKIT与蓝牙的双足机器人:从机械原理到手机遥控实践
  • 新一代ROG NUC发布!性能释放超 300W,白色版本惊艳登场!
  • 2026年5月更新:探寻番禺实木家具保养直销工厂的可靠标杆 - 2026年企业推荐榜
  • 企业托管服务器不完全指南
  • 2025最权威的十大降AI率工具推荐
  • okbiye AI 写作新思路:毕业论文终稿一站式落地,不用熬夜硬熬
  • Orange Pi 3B对比树莓派3:边缘计算与物联网网关的性价比之选
  • 幽默面试:Java SE 与微服务的探讨
  • PointLLM:三维点云与大语言模型融合,实现视觉语言理解新突破
  • AI开发工作流
  • Agentica:模块化AI智能体框架的设计、实现与生产部署指南
  • KafClaw:Apache Kafka增强型命令行客户端,提升数据操作与调试效率
  • 上海梭子蟹批发商怎么选?2026实测避坑与筛选建议
  • GigaAPI:简化多GPU编程的CUDA抽象层
  • 编码器市场深度解析:2025-2032年全球格局、技术趋势与投资机遇
  • TortoiseSvn与TortoiseGit:从零开始的安装与汉化实战指南
  • 168.YOLOv8零基础直达实战|COCO128+CU118环境+完整注释代码
  • 深度解析开源专杀工具openclaw-killer:从恶意软件持久化机制到实战清理
  • 分布式链路追踪在字节跳动的实践
  • 办公室别乱装!现代简约风做错这几点,再花钱也显廉价
  • RFID+AI技术在部队库房智能化管理中的应用方案