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

TheCherno——Engine(十七)渲染开始之前

GPUGraphics Processing Unit的缩写,中文称为图形处理器图形处理单元

  • GPU是一种专门用于图形渲染和并行计算的处理器。

  • 它具有强大的并行计算能力,广泛应用于图形渲染、机器学习、科学计算等领域。

  • 与 CPU 相比,GPU 更适合处理大规模并行任务,但功耗较高。

  • 常见的 GPU 厂商包括 NVIDIA、AMD 和 Intel,编程框架包括 CUDA、OpenCL、Vulkan 等

OpenGL:

  • OpenGL(Open Graphics Library,开放图形库)是一个跨平台的图形 API(应用程序编程接口)。

  • OpenGL 提供了一组函数,允许开发者访问 GPU 的功能,从而进行图形渲染和计算

  • OpenGL 本身是一个软件层面的标准,定义了如何与 GPU 交互,但它并不是硬件。

OpenGL和GPU:

  • OpenGL 是 GPU 的“桥梁”

    • OpenGL 提供了一种标准化的方式,让开发者可以通过软件代码调用 GPU 的功能。

    • 开发者使用 OpenGL 的 API 编写图形渲染代码,OpenGL 将这些指令传递给 GPU 执行。

  • GPU 是 OpenGL 的“执行者”

    • GPU 是实际执行 OpenGL 指令的硬件设备。

    • OpenGL 的渲染命令(如绘制三角形、应用纹理、处理光照)最终由 GPU 完成。

OpenGL 的工作流程

以下是 OpenGL 和 GPU 协作的基本流程:

  1. 应用程序调用 OpenGL API

    • 开发者使用 OpenGL 的函数(如glDrawArraysglClear)编写图形渲染代码。

  2. OpenGL 驱动程序处理指令

    • OpenGL 的驱动程序将 API 调用转换为 GPU 可以理解的指令。

  3. GPU 执行指令

    • GPU 接收指令并执行图形渲染任务(如顶点处理、光栅化、像素着色)。

  4. 结果输出到显示器

    • GPU 将渲染结果输出到帧缓冲区,最终显示在屏幕上。

总结:下面对于渲染部分的计划是 Renderer提供接口(基类),给出OpenGL等API的具体实现(派生类),根据具体情况,可以选择API 的实现。

=====================================================分界线

下面计划将DTClass转换成静态库,这样所有东西都在exe中集成好了,不用再依赖dll,速度也更快

如果后续使用脚本什么的,考虑动态链接

现在这个引擎,静态链接也可以

将DTClass改为静态链接 :

在Premake5.lua中将DTClass项目设为静态库

workspace "DTClass" -- sln文件名 architecture "x64" configurations{ "Debug", "Release", "Dist" } -- 组成输出目录:Debug-windows-x86_64 outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" IncludeDir={} IncludeDir["GLFW"]="DTClass/vendor/GLFW/include" IncludeDir["Glad"]="DTClass/vendor/Glad/include" IncludeDir["ImGui"]="DTClass/vendor/imgui" IncludeDir["glm"]="DTClass/vendor/glm" include "DTClass/vendor/GLFW" include "DTClass/vendor/Glad" include "DTClass/vendor/imgui" project "DTClass" location "DTClass"--在sln所属文件夹下的DTClass文件夹 kind "StaticLib" --生成dll动态库 language "C++" --语言 cppdialect "C++17" staticruntime "on" targetdir ("bin/" .. outputdir .. "/%{prj.name}") -- 输出结果目录 objdir ("bin-int/" .. outputdir .. "/%{prj.name}") -- 中间结果目录 pchheader "dtcpch.h" pchsource "DTClass/src/dtcpch.cpp" -- 包含的所有h和cpp文件 files{ "%{prj.name}/src/**.h", "%{prj.name}/src/**.cpp", "%{prj.name}/vendor/glm/glm/**.hpp", "%{prj.name}/vendor/glm/glm/**.inl" } defines{ "_CRT_SECURE_NO_WARNINGS" } -- 包含目录 includedirs{ "%{prj.name}/src", "%{prj.name}/vendor/spdlog/include", "%{IncludeDir.GLFW}", "%{IncludeDir.Glad}", "%{IncludeDir.ImGui}", "%{IncludeDir.glm}" } links{ "GLFW", "Glad", "ImGui", "opengl32.lib" } -- 如果是window系统 filter "system:windows" systemversion "latest" -- 预处理器定义 defines{ "DTC_PLATFORM_WINDOWS", "DTC_BUILD_DLL", "GLFW_INCLUDE_NONE" } -- 不同配置下的预定义不同 filter "configurations:Debug" defines "DTC_DEBUG" runtime "Debug" symbols "on" filter "configurations:Release" defines "DTC_RELEASE" runtime "Release" optimize "on" filter "configurations:Dist" defines "DTC_DIST" runtime "Release" optimize "on" project "Sandbox" location "Sandbox" kind "ConsoleApp" language "C++" cppdialect "C++17" staticruntime "on" targetdir ("bin/" .. outputdir .. "/%{prj.name}") objdir ("bin-int/" .. outputdir .. "/%{prj.name}") files{ "%{prj.name}/src/**.h", "%{prj.name}/src/**.cpp" } includedirs{ "DTClass/vendor/spdlog/include", "DTClass/src", "DTClass/vendor", "%{IncludeDir.glm}" } links{ "DTClass", "GLFW", "opengl32.lib" } filter "system:windows" systemversion "latest" defines{ "DTC_PLATFORM_WINDOWS" } filter "configurations:Debug" defines "DTC_DEBUG" runtime "Debug" symbols "on" filter "configurations:Release" defines "DTC_RELEASE" runtime "Release" optimize "on" filter "configurations:Dist" defines "DTC_DIST" runtime "Release" optimize "on"

Core.h

ImGuiLayer.cpp

减少 warning

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

相关文章:

  • 给图像传感器做‘体检’:手把手教你用PQTool完成ISP三大基础校正(BLC/AWB/CCM)
  • 长春除甲醛CMA甲醛检测治理公司公共卫生检测报告排行榜(2026版) - 张诗林资源库
  • vscode-eslint的10个强大功能:从自动修复到多语言支持
  • RK3288系统镜像“瘦身”与“增肥”指南:如何精准控制Debian rootfs.img的大小
  • 阿坝除甲醛CMA甲醛检测治理公司公共卫生检测报告排行榜(2026版) - 张诗林资源库
  • 构建本地AI助手:离线优先架构、隐私保护与自动化实战
  • 从自由创作到精确设计:如何在Blender中实现工程级草图绘制
  • 终极MoneyPrinter移动端适配指南:手机端视频管理功能实现技巧
  • 宁德除甲醛CMA甲醛检测治理公司公共卫生检测报告排行榜(2026版) - 张诗林资源库
  • 并行计算模型是并发编程中用于设计和分析多线程或分布式系统处理任务的理论框架。结合之前提到的 System.ArgumentOutOfRangeException 和集合同步问题
  • 长沙除甲醛CMA甲醛检测治理公司公共卫生检测报告排行榜(2026版) - 张诗林资源库
  • 5分钟打造你的专属中文GitHub:零门槛汉化终极指南
  • 2026广东金条购买TOP7!广州等地公司服务平台服务机构店铺口碑广受好评 - 十大品牌榜
  • 【信息科学与工程学】【智能交通】第六篇 自动驾驶车辆制造全尺度零部件与制造装备知识库03
  • 崇左除甲醛CMA甲醛检测治理公司公共卫生检测报告排行榜(2026版) - 张诗林资源库
  • 【读书笔记】《郭德纲讲三国》
  • 智能车竞赛:Infineon TC264核心外设实战与避坑指南
  • PyVisionAI:基于视觉大模型的文档智能提取与图文理解实战
  • Brigadier终极指南:5分钟掌握Mac Boot Camp驱动自动化管理
  • TheCherno——Engine(十八)渲染上下文的抽象
  • StackGAN部署指南:如何将训练好的模型应用到实际项目中
  • 洛雪音乐源下载失败问题终极解决方案:缓存清理与系统优化完整指南
  • 2026济南婚纱摄影外景基地实力排行榜 - 江湖评测
  • 阿拉善盟除甲醛CMA甲醛检测治理公司公共卫生检测报告排行榜(2026版) - 张诗林资源库
  • VibeSkills:从技能仓库到AI操作系统的智能路由与治理运行时
  • 基于Vue 3的Dialogflow Web集成方案:构建企业级对话式AI前端
  • 从点到面:基于网格的轨迹相似度计算新思路
  • AI的“账号”与“钱包”:AWS与Circle同日出手,AI正从工具进化
  • SDR++完整指南:跨平台软件定义无线电终极教程
  • 在Windows电脑上安装安卓应用的完整指南:告别模拟器的笨重时代