GPU、GPU驱动、OpenGL、游戏引擎之间的关系

2023-05-16

游戏引擎使用OpenGL渲染,OpenGL调用显卡驱动告诉GPU干活,GPU经过各种计算把最终的图像渲染出来。

游戏引擎:用于制作游戏或其它实时交互交互图形程序的软件,大多数游戏引擎都包含了渲染、UI、动画、物理引擎、音效、脚本、网络等系统,常见的引擎有Cocos、Unreal Engine、Unity等。而OpenGL,在游戏引擎看来,是其渲染引擎使用的API的一种,类似的API还有DirectX、 Vulkan等。渲染引擎负责调用这些图形API实现渲染,游戏引擎实际上屏蔽了底层使用的是何种图形API。

 

OpenGL:主要做的事情是提供统一的接口调用显卡驱动,让我们屏蔽了不同的显卡——只要按OpenGL教程介绍的方式去渲染一个三角形,不管你在什么操作系统,使用什么显卡,都能正确渲染出来(大概率吧)。

 

显卡驱动:用于驱动显卡工作的程序,不同的显卡有不同的显卡驱动。

GPU是显卡中最重要的核心部件,它接收显卡驱动发送过来的渲染指令,按照顶点的批次发送给多个GPC(图形处理簇),经过渲染管线的处理,最终输出到Framebuffer中。下图是NVidia Turing的GPU架构,可以查看官方的白皮书,对于GPU的架构有更详细的描述。

 

GPU是发动机,GPU驱动是方向盘,离合器,点火塞.总之是用来操纵发动机的东西.因为没人可以也不可以直接操纵发动机.OpenGL是定义了操纵发动机的规范,比如方向盘是圆的,左边刹车,右边油门.刹车盘通常比油门大.当然GPU驱动可以不遵守这些,但这样基本就没人用了.因为驾校是按照OpenGL手册来教学驾车.至于游戏引擎,你可以看作是未来自动驾驶AI,你不想学手动驾车(OpenGL),可以花高价买类似特斯拉,享受自动驾驶.一切自动化.这样的好处是驾车门槛降低,但大家开车风格就都车不多了.另外学会了手动驾驶,对于自动驾驶出问题时可以救自己的命.

游戏引擎是工具,游戏工作者用它做出游戏。游戏通过“OpenGL”告知“驱动”要做什么操作,“驱动”指挥“gpu”做计算并输出内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPU、GPU驱动、OpenGL、游戏引擎之间的关系 的相关文章

  • 如何读取 GPU 负载?

    我正在编写一个程序 用于监控计算机的各种资源 例如CPU使用率等 我还想监控 GPU 使用情况 GPU 负载 而不是温度 using System using System Collections Generic using System
  • 如果我用opengl绘图的话SDL Renderer就没用了吗?

    我正在学习 SDL2 但我也在使用使用 OpenGL 调用的 imgui 库 从我在网上各种博客上读到的内容来看 我无法轻松混合 SDL2 渲染器和 opengl 调用 我要么使用其中之一 要么使用另一个 我读过的大多数教程都使用渲染器 所
  • 当 OpenGL 中同时绑定 1D 和 2D 纹理时,正确的行为是什么?

    假设你有这样的东西 glBindTexture GL TEXTURE 2D my2dTex glBindTexture GL TEXTURE 1D my1dTex glBegin 正确的 OpenGL 行为是什么 要绘制一维纹理 二维纹理还
  • GPU的编程语言有哪些

    我读过一篇文章 指出 GPU 是超级计算的未来 我想知道在GPU上编程使用什么编程语言 OpenCL 是开放式跨平台解决方案 可在 GPU 和 CPU 上运行 另一个是 NVIDIA 为其 GPU 构建的 CUDA HLSL Cg 等少数几
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • 三角形纹理映射OpenGL

    我正在开发一个使用 Marching Cubes 算法并将数据更改为 3D 模型的项目 现在我想在 OpenGL 中为我的 3D 模型使用纹理映射 我首先尝试了一个简单的示例 它将图片映射到三角形上 这是我的代码 int DrawGLSce
  • 如何仅剪切剪切平面的交集(而不是并集)?

    在 OpenGL JOGL 中 当使用多个剪切平面时 似乎会应用所有剪切平面的并集 我想要的是路口要应用的所有剪裁平面 这可能吗 请参阅下面的简化二维示例 Edit An example of clipping by vertex shad
  • 使用 GLSL 直接在着色器中从位置计算平移矩阵

    我正在开发 C OpengL 程序以及 GLSL 顶点和片段着色器 我正在创建同一对象的多个实例 我只需要改变实例之间的对象位置 这是我所做的 我正在使用一个统一变量 它是一个变换矩阵数组 每个矩阵代表一个对象实例 MVP 也是一个变换矩阵
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 更改 GLUT 调用以与 MFC/C++ 一起使用

    我有一个使用 GLUT 进行 OpenGL 渲染的程序 现在我需要它位于 MFC 项目内部 以便它可以与另一个程序组件一起使用 我已经按照这个教程进行操作 http www codeguru com cpp g m opengl openf
  • 致命错误 gl.h 包含在 glew.h 之前

    include
  • 使用 pyclutter 进行编程

    我是混乱 和 pyclutter 的新手 我一直在尝试使用 pyclutter 到目前为止我还没有找到任何好的教程 我的意思是没有真正正确解释的内容 我看到了几个示例程序 但是当我尝试使用 pyclutter 时 我没有得到任何好的结果 这
  • 具有 Cuda Thrust 的多个 GPU?

    如何将 Thrust 与多个 GPU 一起使用 这只是使用 cudaSetDevice deviceId 的问题吗 然后运行相关的 Thrust 代码 使用 CUDA 4 0 或更高版本 cudaSetDevice deviceId 接下来
  • SSBO 是更大的 UBO?

    我目前正在 OpenGL 4 3 中使用 UBO 进行渲染 以将所有常量数据存储在 GPU 上 诸如材料描述 矩阵等内容 它可以工作 但是 UBO 的小尺寸 我的实现为 64kB 迫使我多次切换缓冲区 减慢渲染速度 我正在寻找类似的方法来存
  • 用于新 Windows 游戏项目的 OpenGL 或 Direct3D?或者是其他东西?

    我正在 Windows 上启动一个爱好游戏项目 该项目将大量使用 3D 图形效果 它很可能是用 C 编写的 我应该使用 OpenGL 还是 Direct3D 作为我的图形后端 为什么 或者我应该使用现成的图形引擎 例如OGRE 3D htt
  • glVertexAttribDivisor 和 glVertexBindingDivisor 有什么区别?

    我一直在寻找将属性与任意顶点分组关联起来的方法 起初似乎是我实现这一目标的唯一方法 但后来我偶然发现了这个问题 https stackoverflow com questions 14169228 opengl single vertex
  • 如何使用现代 OpenGL 在透视投影中绘制对象的正交轴? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有带有透视投影的 3D 场景 我还可以选择场景中的一个对象 我需要为选定的对象绘制轴 问题是轴不会在透视投影中保存其大小 如果物体远离眼睛
  • 云或烟雾的粒子系统

    我正在尝试使用 OpenGL 和 CUDA 制作一个简单的用于云和烟雾模拟的粒子系统 如何使粒子系统中的粒子表现得像真正的云或烟雾在低湍流风中的表现 我现在遇到的一些问题是 颗粒聚集成一个大球 粒子扩散到无限远 粒子突然弹射离开 我已经完成
  • CUDA Thrust 的多 GPU 使用

    我想使用我的两张显卡通过 CUDA Thrust 进行计算 我有两张显卡 在单卡上运行对于两张卡都适用 即使我在 std vector 中存储两个 device vector 也是如此 如果我同时使用两张卡 循环中的第一个周期将起作用并且不
  • OpenGL中背景对象绘制在前景对象前面?

    为了测试目的 我们假设我画了 2 个茶壶glutSolidTeapot 像这样 glColor3f 1 0f 0 0f 0 0f Red teapot glutWireTeapot 1 0f glColor3f 0 0f 1 0f 0 0f

随机推荐

  • windows系统-汇编语言与机器码的关系

    接下来就让我们进入到本章的前半部分 在前面章节中已经多次提到 xff0c 计算机CPU能直接解释运行的只有本地代码 xff08 机器语言 xff09 程序 用C语言等编写的源代码 xff0c 需要通过各自的编译器编译后 xff0c 转换成本
  • windows系统-函数的条件分支实现用汇编语言解释

    下面让我们来看一下条件分支的实现方法 条件分支的实现方法同循环处理的实现方法类似 xff0c 使用的也是cmp指令和跳转指令 xff0c 这一点估计大家也预料到了 没错 xff0c 条件分支就是利用这些指令来实现的 不过 xff0c 为了以
  • windows系统-程序加载时生成栈和堆的过程

    EXE文件的内容分为再配置信息 变量组和函数组 xff0c 这一点想必大家都清楚了吧 不过 xff0c 当程序加载到内存后 xff0c 除此之外还会额外生成两个组 xff0c 那就是栈和堆 栈是用来存储函数内部临时使用的变量 xff08 局
  • winform-日记

    1 Form的属性TopLevel设置为false xff0c 就相当于usercontrol的功能了 xff0c 可以被包含在容器中 xff0c 只不过需要动态在代码中加载 xff0c usercontrol则可拖拽
  • C# DataTable用法详解

    添加引用 using System Data 创建表 创建一个空表 DataTable dt 61 new DataTable 创建一个名为 34 Table New 34 的空表 DataTable dt 61 new DataTable
  • C#操作SQLite数据库增、删、改、查 实例

    最近项目上要使用SQLite数据库 xff0c 不怕大伙笑话毕业四年多了 xff0c 一直使用Oracle或者MySQL或者SQLServer xff0c 但是真的是没有用过SQLite数据库 xff0c 据说非常轻量级 xff0c 但是真
  • halcon相机标定及畸变矫正

    1 halcon相机标定和图像矫正 对于相机采集的图片 xff0c 会由于相机本身和透镜的影响产生形变 xff0c 通常需要对相机进行标定 xff0c 获取相机的内参或内外参 xff0c 然后矫正其畸变 相机畸变主要分为径向畸变和切向畸变
  • C# SQLite 数据库操作实例2

    运行环境 xff1a Window7 64bit xff0c NetFramework4 61 xff0c C 7 0 参考 xff1a SQLite 官网SQL As Understood By SQLiteSystem Data SQL
  • 计算机代码内大数据内存堆栈溢出问题

    1 因为不管是c 43 43 还是c xff0c 他们的对象内存都是在堆栈中分配的 xff0c 加入堆栈中有2G空闲空间 xff0c 但是这2G的空间不是连续的 xff0c 也就是说 最大的一块可供缓存数据的内存空间是这2G空间里最大的一片
  • 提高SQLITE 大数据量操作效率的方法

    SQLite 作为一个轻量级嵌入式数据库 xff0c 还是非常好用的 批量插入1000条记录 xff0c 居然耗时 2 分钟 xff01 以下是测试代码 using System Data using System Data Common
  • 在C#项目中使用SQLite(环境安装问题)

    下面这两个是不同的 xff1a 1 System Data SQLite xff08 http system data sqlite org index html doc trunk www index wiki xff09 2 SQLit
  • sqlite3数据库最大可以是多大?可以存放多少数据?读写性能怎么样?详述

    sqlite是款不错的数据库 xff0c 使用方便 xff0c 不需要事先安装软件 xff0c 事先建表 很多人担心它的性能和数据存储量问题 比如有的网友问 xff1a Sqlite数据库最大可以多大呀 xff1f 会不会像acc数据库那样
  • c#子线程中打开系统文件操作对话框

    出错环境 多线程接收文件的时候 需要打开一个SaveFileDialog对象 并调用ShowDialog 方法 出错代码 nbsp html nbsp nbsp nbsp view plain nbsp copy void nbsp thr
  • winform程序最大化时,页面显示不全的问题

    最后贴上引起这个原因的代码 xff0c 但是这段代码不能去掉 xff0c 我要用 xff0c 这段代码可以解决页面切换时的闪烁问题 如果去掉这段代码 xff0c 确实可以完整显示窗口 xff0c 但是闪烁太严重了 最大化后 xff0c 试试
  • C# 捕获系统闪退BUG

    在程序入口添加代码 namespace MainForm static class Program lt summary gt 应用程序的主入口点 lt summary gt STAThread static void CurrentDom
  • Qt中使用OpenGL进行绘图

    Qt Creator中的3D绘图及动画教程 参照NeHe 刚刚学习了Qt Creator xff0c 发现Qt提供了QtOpenGL模块 xff0c 对OpenGL做了不错的封装 xff0c 这使得我们可以很轻松地在Qt程序中使用OpenG
  • 优化Hbase查询速度

    环境 xff1a suse 8G内存 xff0c 8核 xff0c 12T磁盘 hbase master 占一台 xff0c 其他7台作为hbase的region server 注意 xff1a 此处不讨论hadoop 情景 xff1a 我
  • QT中使用OpenGL绘制图形

    Qt Creator中的3D绘图及动画教程 参照NeHe 刚刚学习了Qt Creator xff0c 发现Qt提供了QtOpenGL模块 xff0c 对OpenGL做了不错的封装 xff0c 这使得我们可以很轻松地在Qt程序中使用OpenG
  • C#中使用OpenGL(API)创建OpenGL渲染环境

    在C 中调用1 1版本的OpenGL函数 xff0c 但是光有OpenGL函数还不能绘制图形 xff0c 就像一个画家 xff0c 他即使拥有绘画的技巧 xff0c 还有画笔和颜料 xff0c 如果没有画布 xff0c 他也没有地方画画 有
  • GPU、GPU驱动、OpenGL、游戏引擎之间的关系

    游戏引擎使用OpenGL渲染 xff0c OpenGL调用显卡驱动告诉GPU干活 xff0c GPU经过各种计算把最终的图像渲染出来 游戏引擎 xff1a 用于制作游戏或其它实时交互交互图形程序的软件 xff0c 大多数游戏引擎都包含了渲染