自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(452)
  • 资源 (13)
  • 收藏
  • 关注

原创 Building a Simple Engine -- GUI -- Conclusion

本文总结了基于DearImGui构建的Vulkan跨平台GUI系统,涵盖环境搭建、输入处理、UI元素开发及Vulkan集成等核心内容。系统已实现桌面和移动设备兼容,提供参数控制、信息展示等交互功能。文章指出可优化方向包括性能调优、触控适配、多语言支持等,并探讨了与其他引擎组件的集成方案。同时介绍了Nuklear、Qt等备选GUI库的特点,强调选择时需权衡开发范式、性能等因素。最后指出该GUI系统为开发专业级应用奠定基础,下一章将聚焦3D模型加载与渲染技术。

2026-02-08 07:30:00 128

原创 Building a Simple Engine -- GUI -- Vulkan integration

本文详细介绍了ImGui与Vulkan渲染管线的集成方案。主要内容包括:1) 核心集成流程,从准备帧到呈现的全过程;2) 两种命令缓冲区集成方案(单/多命令缓冲区)的实现与优劣对比;3) 动态渲染特性的应用,简化renderpass和framebuffer管理;4) 高级主题如多视口支持、高DPI处理和纹理渲染;5) 性能优化建议与完整工具类封装方案。通过动态渲染等现代Vulkan特性,实现了灵活高效的GUI系统集成,为不同应用场景提供了可扩展的解决方案。

2026-02-08 07:15:00 185

原创 Building a Simple Engine -- GUI -- UI elements

本文探讨了将ImGui集成到Vulkan应用的核心概念,重点包括:1)关注点分离、性能优化和输入管理等关键设计原则;2)Vulkan特定实现技术,如缓冲区管理、命令缓冲区集成和描述符资源配置;3)纹理显示方案,包括描述符集创建和图像控件使用;4)3D对象拾取实现,协调GUI与场景交互。文章提供了完整的代码示例,展示了如何构建组件化GUI系统,并平衡2D界面与3D交互的关系,最终实现高效、直观的图形界面解决方案。

2026-02-08 07:00:00 123

原创 Building a Simple Engine -- GUI -- Input handling

本文介绍了在3D应用中集成GUI时的输入事件管理方案。主要内容包括:1)设计跨平台的抽象输入系统,提供统一的输入状态跟踪和动作映射接口;2)实现输入优先级机制,确保GUI和3D场景输入的正确路由;3)展示GLFW窗口库的具体适配实现;4)提出输入模式切换、手势识别和上下文系统等高级处理技术。通过构建平台无关的输入层,开发者可以为用户提供流畅的交互体验,同时保持代码的跨平台兼容性。

2026-02-07 07:30:00 771

原创 Building a Simple Engine -- GUI -- ImGui setup

本文详细介绍了在Vulkan应用中集成DearImGui图形界面的完整实现过程。主要内容包括:1. 通过手动集成方式将ImGui源码引入项目;2. 实现ImGuiVulkanUtil类作为Vulkan与ImGui的桥梁,包含GPU资源管理、管线配置、输入处理等核心功能;3. 详细讲解了字体纹理上传、动态缓冲区更新、渲染指令记录等关键技术实现;4. 提供了完整的初始化、渲染循环和清理代码示例。该方案采用现代Vulkan动态渲染技术,实现了高效UI渲染与3D场景的无缝集成,支持键盘输入处理和多种视觉样式配置。

2026-02-07 07:15:00 914

原创 Building a Simple -- EngineGUI -- Introduction

欢迎来到《构建简易引擎》系列的章节!上一章节中我们实现了相机系统,本章将为 Vulkan 应用添加图形用户界面(GUI)。设计完善的 GUI 是打造交互式应用的核心,能让用户实现参数控制、信息展示,以及与 3D 场景的交互操作。本章我们将把业内主流的即时模式 GUI 库 Dear ImGui 集成到 Vulkan 引擎中。Dear ImGui 凭借简洁的使用方式、优秀的性能和灵活的拓展性,在游戏与图形开发领域得到广泛应用。

2026-02-07 07:00:00 983

原创 Building a Simple Engine -- Lighting & Materials -- Conclusion

本章系统介绍了基于物理的渲染(PBR)技术在Vulkan引擎中的实现。重点讲解了金属度-粗糙度工作流,包括BRDF理论、glTF材质映射、着色器实现和阴影效果处理。通过pushconstants高效传递材质参数,构建了完整的线性光照计算管线,涵盖色彩空间转换、能量守恒等关键环节。同时提供了渲染异常排查思路,并指出IBL、HDR等优化方向。本章为PBR渲染奠定了坚实基础,后续可向光照、材质或性能等方向深入拓展。

2026-02-06 07:30:00 1099

原创 Building a Simple Engine -- Lighting & Materials -- Shadows

光线查询为现代引擎实现阴影效果提供了强大且灵活的方案。特性阴影映射(Shadow Mapping)光线查询(Ray Query)精度受纹理分辨率限制(存在走样)像素级精准(基于几何相交检测)实现复杂度高(偏移调试、多光源管理难度大)低(直接的可见性检测)内存开销高(每个光源对应一张深度贴图)低(仅需维护加速结构)软阴影支持复杂(需结合 PCSS、模糊等技术)原生支持(直接对面积光源采样)

2026-02-06 07:15:00 666

原创 Building a Simple Engine -- Lighting & MaterialsVulkan -- integration

本文介绍了如何将PBR(基于物理的渲染)技术集成到Vulkan渲染管线中。主要内容包括:更新渲染器类以支持PBR管线,创建专门的PBR材质属性结构体;扩展初始化流程来构建PBR管线;更新渲染流程以绑定PBR管线并推送材质属性;使用glTF模型测试PBR实现效果。该方案为渲染物理精确的材质提供了基础框架,能够兼容glTF模型的PBR材质定义,并支持灵活的材质属性修改。通过RAII机制自动管理资源,确保代码安全性。该实现将在后续章节中用于加载和渲染glTF模型。

2026-02-06 07:00:00 532

原创 Building a Simple Engine -- Lighting & MaterialsLighting -- implementation

本文介绍了基于物理的渲染(PBR)着色器的实现方法,采用金属度-粗糙度工作流,兼容glTF模型。着色器通过推送常量传递材质属性,使用统一缓冲区传递变换矩阵和光照信息。文章详细解析了着色器的三部分架构:1) CPU-GPU通信层的数据结构和资源绑定;2) PBR数学核心的Cook-Torrance微表面BRDF模型;3) 顶点与片段着色器的主逻辑实现。同时提供了扩展渲染器的步骤,包括创建PBR管线、更新统一缓冲区和添加推送材质属性支持。该实现严格遵循glTF标准,确保物理正确性和数值稳定性,并支持HDR管线、

2026-02-05 07:15:00 1139

原创 Building a Simple Engine -- Lighting & Materials -- Push constants

Vulkan推送常量(PushConstants)是一种高效的小数据传输机制,允许直接通过命令缓冲区向着色器传递数据,无需描述符集和内存分配。推送常量适合传递高频更新、体积小(通常≤128字节)的数据,如材质属性参数。其实现包含两个关键步骤:在管线布局中定义推送常量范围,并通过commandBuffer.pushConstants发送数据。相比统一缓冲区,推送常量更新速度更快但容量有限,适用于不同场景的数据传递需求。在PBR渲染中,推送常量常用于传递材质属性,而统一缓冲区则更适合处理低频更新的大数据集。

2026-02-05 07:00:00 1235

原创 Building a Simple Engine -- Lighting & Materials -- Lighting models

本文系统介绍了计算机图形学中的光照模型发展历程,重点分析了从传统模型(平面着色、高洛德着色、冯氏模型)到基于物理的渲染(PBR)的技术演进。文章详细阐述了各类光照模型的核心原理、优势局限及应用场景,特别解读了glTF格式采用的金属度-粗糙度工作流PBR实现方案。同时探讨了光源类型选择、高级光照技术(如全局光照、次表面散射)以及模型选型时的关键考量因素,为图形渲染实践提供了全面的理论指导。

2026-02-04 07:15:00 1246

原创 Building a Simple Engine -- Lighting & Materials -- Introduction

摘要:本章介绍3D渲染中光照与材质的基础原理,重点讲解基于物理的渲染(PBR)技术。PBR基于物理原理模拟光线与表面交互,相比传统渲染方法更具真实感和一致性。文章详细阐述了PBR的核心原理,包括能量守恒、微表面理论和菲涅尔效应,并介绍了金属度-粗糙度工作流及BRDF函数。同时讲解了计算机图形学中材质的关键属性与常见类型,以及如何通过推送常量传递材质数据。本章为理解现代3D渲染技术奠定了重要基础。

2026-02-04 07:00:00 700

原创 Building a Simple Engine -- Camera Transformations -- Conclusion

在本章中,我们为 Vulkan 应用程序构建了一套完整的相机系统。接下来我们将总结所学内容,并探讨可优化的方向。

2026-02-03 07:15:00 261

原创 Building a Simple Engine -- Camera Transformations -- Vulkan integration

本教程详细介绍了如何将相机系统集成到Vulkan应用程序中。主要内容包括:创建统一缓冲区(UBO)存储模型、视图和投影矩阵;设置描述符集布局和描述符集;实现持久化映射缓冲区以提高更新效率;基于相机移动和模型变换逐帧更新矩阵数据;处理键盘和鼠标输入来控制相机移动和旋转。通过五个关键步骤完成集成,最终实现了一个功能完备的3D相机系统,支持用户通过输入设备实时导航场景。

2026-02-03 07:00:00 674

原创 Building a Simple Engine -- Camera Transformations -- Camera implementation

本文详细介绍了3D相机系统的设计与实现方法。主要内容包括:1)基础相机类的架构设计,涵盖空间定位、欧拉角表示、输入处理和矩阵生成等核心功能;2)第三人称相机的进阶实现,重点解决了目标跟踪、遮挡规避和轨道控制等关键技术;3)相机系统与图形管线的集成方案。文章从数学原理到具体实现,系统地阐述了构建灵活、实用的3D相机系统的完整方案,适用于游戏开发、建筑可视化等多种3D应用场景。

2026-02-02 07:15:00 717

原创 Building a Simple Engine -- Camera Transformations -- Transformation matrices

本文介绍了3D图形学中的变换矩阵及其应用,重点解析了模型-视图-投影(MVP)管线的实现过程。模型矩阵负责物体空间到世界空间的转换,视图矩阵处理世界空间到相机空间的变换,投影矩阵则实现3D到2D的映射。文章还详细说明了法向量矩阵的处理方法,以及如何在着色器中应用这些变换矩阵。最后提及了层级变换在复杂场景中的应用,为后续实现3D相机系统奠定基础。

2026-02-02 07:00:00 753

原创 Building a Simple Engine -- Camera Transformations -- Math foundations

本文系统介绍了3D图形学中相机系统的数学基础,重点阐述了向量运算、矩阵变换、坐标系转换等核心概念。主要内容包括:1)向量在3D图形中的关键作用及运算方法;2)矩阵变换的类型与应用,包括模型矩阵、视图矩阵和投影矩阵;3)Look-At函数的实现原理与应用场景;4)射线投射技术的数学表示与实现;5)透视与正交投影的区别及实现方法;6)四元数在旋转运算中的优势;7)3D图形学中不同坐标系的转换关系。这些数学工具为构建灵活的3D相机系统提供了理论基础,是实现物体拾取、场景渲染等功能的关键支撑。

2026-02-01 07:15:00 750

原创 Building a Simple Engine -- Camera Transformations -- Introduction

本章核心目标是讲解 Vulkan 中 3D 相机系统的实现,核心围绕 3D 变换数学、变换矩阵、相机控制及管线集成展开。学习本章需具备 Vulkan 核心教程基础,以及命令缓冲区、图形管线等关键 Vulkan 概念和 C++ 编程能力。完成学习后将掌握 3D 变换原理,并获得可直接复用的 Vulkan 相机系统。

2026-02-01 07:00:00 227

原创 Building a Simple Engine -- Engine Architecture -- Conclusion

本文总结了现代渲染引擎的核心架构设计原则与实践经验。重点分析了分层架构、组件化系统、面向数据设计和服务定位器等关键模式的应用场景,探讨了组件系统、资源管理、渲染管线和事件系统等核心模块的实现方案。文章强调架构设计应遵循渐进式开发理念,在灵活性与复杂度间寻找平衡,同时重视性能考量与迭代重构。建议通过实践探索和开源项目研究来深化理解,并指出成功的引擎开发需要持续演进以适应项目需求变化。这些架构基础为后续引擎功能开发提供了重要支撑。

2026-01-31 07:15:00 686

原创 Building a Simple Engine -- Engine Architecture -- Event systems

本文探讨了渲染引擎中事件系统的设计与实现。事件系统通过解耦模块间的直接依赖,提供灵活高效的通信机制。文章详细介绍了基础事件系统的实现方案,包括基事件类型定义、监听器与分发器机制、事件总线的即时和队列两种投递模式,并给出了具体使用示例。此外,还分析了事件分类、优先级、冒泡捕获等高级特性。一个设计良好的事件系统能显著提升引擎的模块化程度、可维护性和扩展性,是构建现代游戏引擎架构的关键组件。

2026-01-31 07:00:00 1293

原创 Building a Simple Engine -- Engine Architecture -- Resource management

本文介绍了渲染引擎中资源管理系统的设计与实现。系统采用分层架构管理各类资源(纹理、网格、着色器等),通过资源句柄、引用计数和缓存机制实现高效资源管理。关键技术包括:1) 基于类型的安全资源存储与访问;2) 智能加载/卸载策略;3) 异步加载支持;4) 开发期热重载功能。系统还实现了纹理、网格和着色器等核心资源的专有管理逻辑,包括Vulkan资源创建、GPU内存优化等。这种资源管理系统可显著提升渲染性能,降低内存占用,并为复杂渲染场景提供可靠支持。

2026-01-30 07:00:00 1255

原创 Building a Simple Engine -- Engine Architecture -- Rendering pipeline

本文详细介绍了现代Vulkan渲染管线的设计与实现,重点阐述了基于渲染图(Rendergraph)的动态渲染架构。文章首先概述了渲染管线的核心阶段,包括场景剔除、渲染通道管理、命令生成与执行等,然后深入讲解了渲染图的数据结构、资源管理、依赖分析和自动同步机制。特别强调了动态渲染与传统渲染通道的区别,展示了如何结合渲染图实现延迟渲染技术,包括G缓冲配置、几何通道和光照通道的实现。文章还详细解析了Vulkan同步机制,包括管线屏障、信号量和围栏的使用场景,并提供了最佳实践建议。通过这种架构,开发者能够构建灵活、

2026-01-30 07:00:00 1312

原创 Building a Simple Engine -- Engine Architecture -- Component systems

本文探讨了基于组件的架构在Vulkan渲染引擎中的实现。相比传统的深层继承体系,组件系统通过组合方式提供了更好的灵活性、模块化和性能。文章详细介绍了组件系统的设计原则(单一职责、封装性、低耦合、可复用性),并给出了基础实现方案,包括组件基类、实体管理、常见组件类型(变换、网格、相机)等。同时讨论了组件通信方式(直接引用和事件系统)、生命周期管理以及性能优化方案(组件类型ID)。这种架构避免了继承体系的弊端,使引擎更易维护和扩展,为后续资源管理系统奠定了基础。

2026-01-29 07:30:00 465

原创 Building a Simple -- EngineEngine Architecture -- Introduction

欢迎阅读《构建简易游戏引擎》系列教程的章节!在本章中,我们将探讨构成现代 Vulkan 渲染引擎核心的基础架构模式与设计原则。本系列教程虽以的构建为核心,但所涉及的架构理念同时适用于渲染引擎与完整游戏引擎的开发。我们会明确区分哪些模式更适合渲染导向的系统开发,哪些则适用于更通用的游戏引擎开发场景。首先,我们会从宏观角度审视引擎的整体结构。一个设计优良的架构,是打造灵活、可维护且可扩展渲染系统的关键前提。

2026-01-29 07:15:00 1635

原创 Building a Simple -- EngineIntroduction

《构建简易引擎》系列教程为已掌握Vulkan核心知识的开发者提供进阶指导,采用结构化方法构建可复用渲染引擎。教程强调引擎架构设计、资源管理、渲染技术和性能优化等关键概念,使用vk::raii和C20模块简化开发流程。学习过程中鼓励自主实践与实验性开发,需配合《Vulkan指南》等参考资料。教程涵盖从相机系统到移动开发适配的完整内容,并提供Bistro资源包快速入门。建议开发者通读章节后动手实践,将教程代码作为开发起点进行功能扩展。

2026-01-29 07:00:00 952

原创 Building a Simple Engine --Engine Architecture -- Architectural patterns

本文概述了现代渲染引擎与游戏引擎的常用架构模式,重点介绍了基于组件的架构(CBA)。作为Vulkan渲染引擎的设计基础,CBA通过实体-组件-系统的模块化设计实现灵活扩展和高效渲染。相比分层架构、面向数据设计等服务定位器模式,CBA能更好地分离渲染关注点,支持图形功能灵活调整,并兼容性能优化。文中提供了组件系统的代码示例,并解释了选择CBA作为核心架构的原因:模块化、可扩展性以及与行业标准方案的兼容性。最后指出在实际开发中将结合其他架构模式的优点,为后续深入探讨组件系统实现奠定基础。

2026-01-29 07:00:00 1911

原创 Ray Tracing -- Conclusion

本课程在Vulkan光栅化管线中实现了光线追踪效果,主要技术包括:1)动态渲染简化了渲染流程,成为Vulkan推荐方式;2)通过构建BLAS/TLAS加速结构实现光线查询;3)在片段着色器中实现阴影和反射效果,支持透明物体处理。实验采用RenderDoc和NsightGraphics进行调试验证,所有效果无需独立光线追踪管线,适用于移动端GPU。课程提供了完整的Vulkan学习资源和3D模型来源,帮助开发者掌握混合渲染技术。

2026-01-28 07:15:00 965

原创 Ray Tracing -- Reflections

本文摘要:介绍了基于光线查询实现反射效果的技术方案。通过从像素点沿镜面反射方向发射光线,检测命中物体并采样其颜色来实现反光材质效果。详细说明了实现步骤:1) 通过push constants传递反光标志位;2) 在片段着色器中调用反射处理函数;3) 实现apply_reflection函数,包括计算反射方向、光线追踪查询和颜色混合。特别强调了与阴影检测的不同之处:需要获取最近命中三角形的完整颜色而非仅检测相交。最终通过0.7的反射强度将反射颜色与基础颜色混合,实现桌面积水反射环境的效果。

2026-01-28 07:00:00 965

原创 Ray Tracing -- Shadow transparency

本文介绍了在光线追踪渲染中实现透明物体阴影效果的完整技术方案。通过Alpha测试技术,系统能够正确处理带透明通道的纹理(如树叶模型),在阴影计算时根据纹理Alpha值决定是否继续光线追踪。关键技术包括:1) 使用加速结构标记透明几何体;2) 构建实例查找表实现无绑定资源访问;3) 在光线查询中实现透明度检测循环,通过纹理采样和Alpha测试动态处理透明片段。该方案克服了传统阴影映射技术难以处理精细Alpha细节的局限,最终实现了高质量的透明物体阴影效果。文中还详细介绍了使用Nsight Graphics工具

2026-01-27 07:30:00 924

原创 Ray Tracing -- TLAS animation

本文摘要介绍了实现动画物体阴影同步更新的方法。通过在每帧更新实例变换矩阵并重建顶级加速结构(TLAS)来保持阴影与物体动画同步。关键步骤包括:1)更新实例变换矩阵;2)以更新模式重建TLAS;3)添加适当的内存屏障确保同步;4)在绘制循环中调用更新函数。该方法利用光线查询技术直接在片段着色器中实现阴影计算,相比完整的光线追踪管线更高效,尤其适合移动设备等仅支持光线查询的硬件平台。通过原地更新TLAS而非重建,显著提升了动画场景的性能表现。

2026-01-27 07:00:00 668

原创 Ray Tracing -- Ray query shadows

本文介绍了在片段着色器中通过光线查询实现硬阴影效果的方法。核心步骤包括:1)从片段位置向光源方向投射阴影射线;2)设置射线参数(TMin/TMax)避免自相交;3)初始化RayQuery对象并配置优化标志;4)执行光线追踪查询;5)根据首个命中结果判断阴影状态。当前实现存在阴影不随物体动画更新的问题,需通过重建TLAS解决。该方法利用光线查询快速检测遮挡关系,实现了基础的实时阴影效果。

2026-01-26 08:15:00 1362

原创 Ray Tracing -- Acceleration structures

本文介绍了在Vulkan中构建加速结构(BLAS/TLAS)的完整流程。首先为每个子网格创建底层加速结构(BLAS),包含几何体数据描述、内存分配和构建指令提交。然后创建顶层加速结构(TLAS)来引用所有BLAS实例,并附加变换信息。最后将TLAS绑定到着色器描述符集,为光线追踪查询做准备。整个过程涉及几何体数据准备、内存资源查询、缓冲区分配、加速结构构建和描述符绑定等关键步骤,最终建立起可供着色器调用的优化加速结构,为后续光线追踪计算提供高效的空间查询能力。

2026-01-26 07:30:00 734

原创 Ray Tracing -- Dynamic Rendering

摘要:本文介绍了Vulkan动态渲染(Dynamic Rendering)的实现方法,重点讲解了如何配置和使用该功能。通过vkCmdBeginRenderingKHR替代传统渲染通道,动态渲染允许运行时指定渲染附件,提高了灵活性。文章详细说明了检查动态渲染配置的代码实现,包括图形管线初始化和命令缓冲录制过程。同时介绍了使用RenderDoc验证动态渲染的方法,包括捕获帧画面和检查相关调用记录。动态渲染能降低CPU开销,并支持分片本地读取等高级功能,对移动端开发尤为重要。

2026-01-26 07:15:00 221

原创 Ray Tracing -- Overview

本教程将指导开发者使用Vulkan实现光线追踪功能,基于动态渲染技术构建实时像素级精准阴影和反射效果。教程提供框架代码,通过分步指引完成着色器开发,重点讲解加速结构(BLAS/TLAS)构建和光线查询(RayQuery)应用。针对移动端优化,采用VK_KHR_dynamic_rendering扩展简化流程,并推荐使用光线查询而非完整光线追踪管线以提升性能。教程要求中级Vulkan基础,提供任务标记和验证机制,支持Visual Studio和命令行两种编译方式。

2026-01-26 07:00:00 1287

原创 Rendering Multiple Objects

本文摘要介绍了在Vulkan中渲染多个对象的关键实现方法。主要内容包括:1) 定义GameObject结构体存储对象变换属性和资源;2) 为每个对象创建独立的统一缓冲区和描述符集;3) 共享顶点缓冲区、纹理等资源以减少内存占用;4) 修改命令缓冲区录制逻辑以遍历绘制所有对象。文章还强调了性能优化要点,如最小化状态切换和批处理绘制调用,为构建更复杂的渲染系统奠定了基础。

2026-01-25 07:30:00 883

原创 Multithreading with Vulkan

本文介绍了Vulkan多线程编程的关键技术与实现方法。主要内容包括: Vulkan多线程优势:线程安全的命令缓冲区录制、显式同步机制和基于队列的并行架构 实现要点: 线程安全的资源管理(命令池、缓冲区) 工作线程分配与任务协调 计算着色器修改以支持多线程处理 高级技术:次级命令缓冲区、线程池动态分配、异步资源加载 性能考量:线程创建开销、任务粒度、内存屏障等 调试技巧:验证层、线程检查工具、线程安全日志 通过合理利用多线程,可显著提升计算密集型Vulkan应用的性能。

2026-01-25 07:00:00 778

原创 Android:将 Vulkan 应用迁移至移动端

本文介绍了将Vulkan应用从桌面端迁移到Android平台的关键步骤和最佳实践。主要内容包括:1) Android平台开发Vulkan应用的特殊考量,如窗口系统集成、应用生命周期管理和资源加载方式;2) 项目搭建流程,包括构建配置、CMake设置和原生代码结构;3) 跨平台实现方案,通过预处理指令和统一接口实现代码复用;4) Android特有的着色器处理方式,采用构建时本地编译策略;5) 现代Android集成方案,推荐使用GameActivity替代传统NativeActivity。文章强调通过合理的

2026-01-24 07:30:00 1596

原创 Migrating to Modern Asset Formats: glTF and KTX2

本文摘要: 本文详细介绍了从传统3D模型格式OBJ和图像格式PNG/JPEG迁移到现代图形格式glTF和KTX2的技术方案。主要内容包括: glTF与KTX2的概述: glTF是3D模型的现代传输格式,支持动画、骨骼等高级特性 KTX2是GPU优化的纹理容器,支持压缩格式和Mipmap 迁移实现: 使用tinygltf替代tinyobjloader加载glTF模型 使用KTX库替代stb_image加载KTX2纹理 详细代码示例展示模型和纹理加载的修改 高级特性: 处理glTF的材质、动画等特性 利用KTX

2026-01-24 07:15:00 825

原创 Vulkan Profiles

本文摘要:Vulkan Profiles是预定义的特性集合,可大幅简化Vulkan开发流程。通过标准化特性、扩展和限制的检查机制,它能够: 自动验证硬件兼容性 消除手动特性检测需求 减少70%以上的样板代码 实现时只需定义目标Profile并检查支持性,系统会自动启用所有相关特性。相比传统手动检测方案,使用Profiles可使代码量减少50%,维护成本降低60%,同时保证跨硬件兼容性。最佳实践包括选择合适Profile层级、提供降级方案和多硬件测试。

2026-01-24 07:00:00 1557

嵌入式C开发人员最好笔试题

给各位正在找工作的码农们一套比较好的笔试题

2013-09-13

Programming Massively Parallel Processors

Programming Massively Parallel Processors

2024-04-17

现代计算机图形学入门-Games101课件

本课程将全面而系统地介绍现代计算机图形学的四大组成部分:(1)光栅化成像,(2)几何表示,(3)光的传播理论,以及(4)动画与模拟。每个方面都会从基础原理出发讲解到实际应用,并介绍前沿的理论研究。通过本课程,你可以学习到计算机图形学背后的数学和物理知识,并锻炼实际的编程能力。 顾名思义,作为入门,本课程会尽可能的覆盖图形学的方方面面,把每一部分的基本概念都尽可能说清楚,让大家对计算机图形学有一个完整的、自上而下的全局把握。全局的理解很重要,学完本课程后,你会了解到图形学不等于OpenGL,不等于光线追踪,而是一套生成整个虚拟世界的方法。从本课程的标题,大家还可以看到“现代”二字,也就是说,这门课所要给大家介绍的都是现代化的知识,也都是现代图形学工业界需要的图形学基础。 本课程与其它图形学教程还有一个重要的区别,那就是本课程不会讲授OpenGL,甚至不会提及这个概念。本课程所讲授的内容是图形学背后的原理,而不是如何使用一个特定的图形学API。在学习完这门课的时候,你一定有能力自己使用OpenGL写实时渲染的程序。另外,本课程并不涉及计算机视觉、图像视频处理、深度学习,也不会介绍游戏引

2024-04-16

WEBGL英文原版教程

目 录 第1章 WebGL简介 1 1.1 WebGL——一个技术定义 2 1.2 3D图形学——入门 4 1.2.1 3D坐标系 4 1.2.2 网格、多边形和顶点 5 1.2.3 材质、纹理和光源 5 1.2.4 变换与矩阵 6 1.2.5 相机、透视、视口和投影 6 1.2.6 着色器 7 1.3 WebGL原生API 8 1.3.1 WebGL应用结构剖析 9 1.3.2 画布元素与绘制上下文 9 1.3.3 视口 10 1.3.4 Buffer、ArrayBuffer和类型化数组 10 1.3.5 矩阵 11 1.3.6 着色器 12 1.3.7 绘制图元 13 1.4 本章小结 14 第2章 你的第一个WebGL程序 15 2.1 Three.js——一个JavaScript 3D引擎 15 2.2 建立Three.js运行环境 17 2.3 一个简单的Three.js网页 17 2.4 一个真实的3D示例 20 2.4.1 为场景着色 23 2.4.2 添加纹理映射 24 2.4.3 旋转物体 25 2.4.4 循环重绘和requestAnimationFrame() 25 2.4.5 让页面贴近生活 26 2.5 本章小结 27 第3章 图形 28 3.1 Sim.js——一个轻量级的WebGL模拟框架 29 3.2 创建网格 30 3.3 使用材质、纹理和光源 34 3.3.1 光源的种类 35 3.3.2 使用多重纹理创建更具真实感的场景 37 3.3.3 纹理与透明 42 3.4 构建变换层级 42 3.5 创建自定义几何体 46 3.6 点和线的渲染 49 3.6.1 使用粒子系统绘制点 50 3.6.2 线的绘制 52 3.7 编写着色器 53 3.7.1 WebGL着色器基础 53 3.7.2 Three.js中的着色器 55 3.8 本章小结 60 第4章 动画 61 4.1 动画基础 61 4.1.1 帧动画 61 4.1.2 时间动画 62 4.1.3 插值与补间动画 62 4.1.4 关键帧 63 4.1.5 关节动画 64 4.1.6 蒙皮动画 64 4.1.7 目标变形动画 64 4.2 使用Tween.js库来创建补间动画 65 4.2.1 创建一个基本的补间动画 66 4.2.2 带缓动效果的补间动画 68 4.3 为带关节的模型制作关键帧动画 71 4.3.1 载入模型 71 4.3.2 为模型制作动画 73 4.4 材质和光源动画 76 4.5 纹理动画 78 4.6 蒙皮动画和变形动画 80 4.7 本章小结 80 第5章 交互 81 5.1 点击检测、拾取和投影 81   Three.js中的点击检测 82 5.2 处理鼠标移入和点击 85 5.3 处理拖曳 88   在拖曳中使用补间动画 91 5.4 使用点击点和法线信息 91 5.5 基于相机的交互 92 5.5.1 利用镜头控制制作一个模型浏览器 93 5.5.2 场景漫游 95 5.6 本章小结 96 第6章 2D与3D的整合 98 6.1 整合动态HTML和WebGL 99 6.1.1 创建DIV元素弹出层 99 6.1.2 利用2D屏幕坐标为3D物体添加注释 103 6.1.3 为3D场景添加背景图片 104 6.2 在2D页面上插入3D浮层 105 6.3 利用2D Canvas创建动态纹理 107 6.4 使用视频作为纹理 115 6.5 渲染动态3D文字 119 6.6 WebGL中的终极整合 121 6.7 本章小结 123 第7章 实战WebGL 124 7.1 如何选择运行库和框架 124 7.2 载入3D内容 126 7.2.1 COLLADA:数字资产交换格式 126 7.2.2 Three.js中的JSON模型文件格式 130 7.2.3 Three.js二进制模型文件格式 134 7.2.4 压缩3D模型 135 7.2.5 Three.js中的JSON场景文件格式 136 7.3 创建3D内容 137 7.3.1 从Blender中导出3D内容 137 7.3.2 把OBJ文件转换为Three.js JSON文件 139 7.3.3 把OBJ文件转换为Three.js二进制文件 139 7.3.4 其他软件或格式的转换 139 7.4 浏览器支持度 140 7.4.1 检测浏览器的WebGL支持 141 7.4.2 在Safari中开启WebGL支持 142 7.5 处理丢失上下文事件 143 7.6 WebGL的安全性 146 7.7 本章小结 149 第8章 你的第一个WebGL游戏 150 8.1 构建游戏的各个部分 151 8.1.1 相机、角色和控制 152 8.1.2 美术设计 159 8.1.3 模型预览器 161 8.1.4 创建粒子系统 163 8.1.5 添加声音 166 8.2 万物归一 167 8.3 本章小结 180 后记 181 附录A WebGL在线资源 183

2013-08-23

winform 实现QQ截图功能

winform 实现QQ截图功能,可以通过鼠标选取,然后拖拉进行截图,功能很好用,有源码

2013-03-15

api_sdk_2008 SolidWorks

SolidWorks2008 API SDK 支持VC++6.0和VC++2005

2013-11-18

PaaS云计算系统仿真平台及其数据库子系统的设计与实现

随着云计算的发展,其可伸缩性、高可用性、易管理性以及低成本等优点逐 渐得到广泛的认可。PaaS(平台即服务)云计算系统成为一个重要的发展趋势。 然而应用在真实的PaaS云计算系统中直接进行部署或实验将带来较高的成本。 因此,需要构建PaaS云计算系统仿真平台,通过仿真分析,指导应用在真实PaaS 云计算系统中的部署,避免不必要的资源浪费。 本文首先分析了PaaS云计算系统的特点,提出了分层的PaaS云计算系统仿 真平台的系统架构。仿真平台采用分层结构及模块化设计,由仿真运算子系统和 仿真呈现子系统组成,具有良好的可扩展性,能够较好地模拟真实PaaS云计算 系统。然后本文分析了PaaS云计算系统仿真平台数据库子系统的功能和需求。 提出了数据库子系统的设计方案,既满足仿真平台现有的功能和需求,又具有良 好的可扩展性。数据库子系统对仿真运算子系统和仿真呈现子系统提供高效、简 单的接口。通过PaaS云计算系统仿真平台数据库子系统,仿真平台能够向用户 提供仿真数据和分析统计结果,为应用在真实PaaS云计算系统中的部署提供参 考依据。 Paas云计算系统仿真平台的前端部分采用javascriPt和PHP实现,数据库采 用MySQL实现,后端部分基于开源软件oMNct++实现。对PaaS云计算系统仿 真平台的测试表明,此平台不但可以较好的完成各项功能指标,而且具备良好的 运行效率和稳定性。 本文的成果能为应用在真实PaaS云计算系统中的部署提供参考依据。对云 计算系统的研究和发展有重要的实用价值。

2012-10-31

齿轮设计WebCAD系统中STEP标准的应用_孙磊

介绍齿轮设计的Web CAD系统的总体结构:描述系统主要模块的功能及设计原理,重点阐述产品模型数据交换标准(STEP)在系统图形数据交换模块中的功能实现形式。

2013-08-23

java中使用JNI调用vs2005

教你如何调用c++的教程,供大家学习参考

2011-07-22

node.js 手册中文版

入门教程,源代码稍后奉上,这本书还行,就是代码有些过时,仅供参考

2014-03-24

jquery-ui-1.9.0.custom.zip

jquery官方插件,该插件用于治国更富有表现力的网站,是jquery的扩展库

2012-10-31

jQuery即学即用

本代码为《jQuery即学即用》一书的代码 主要有: 第一部分:jquery基础知识 第二部分:jquery的基本应用 第三部分:jquery官方插件—jquery  UI 第四部分:比较流行的非jquery插件 第五部分:“糅合”的web服务,包括flickr  API和GOOLE地图

2012-10-31

opengl编程指南

总目录     第一章 OpenGL与三维图形世界  第二章 OpenGL概念建立 第三章 Windows NT环境下的OpenGL    第四章 OpenGL基本程序结构 第五章 OpenGL数据类型和函数名 第六章 OpenGL辅助库的基本使用  第七章 OpenGL建模   第八章 OpenGL变换  第九章 OpenGL颜色  第十章 OpenGL光照  第十一章 OpenGL位图和图像 第十二章 OpenGL纹理  第十三章 OpenGL复杂物体建模  第十四章 OpenGL特殊光处理 第十五章 OpenGL效果处理  第十六章 OpenGL显示列表 第十七章 OpenGL帧缓存和动画

2013-07-02

SQL版C#小型超市进销存销售管理系统

SQL版C#小型超市进销存销售管理系统,适合小型超市,仅供大家学习之用。

2013-07-02

基于CATIA_CAA的飞机结构虚拟装配信息模型研究_曹俊生

基于CATIA_CAA的飞机结构虚拟装配信息模型研究_曹俊生

2013-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除