首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏引擎是如何与GPU对话的,在过程的中间是什么?

游戏引擎是如何与GPU对话的,在过程的中间是什么?
EN

Stack Overflow用户
提问于 2015-02-24 16:54:52
回答 2查看 1.5K关注 0票数 1

我想了解如何在游戏引擎内的命令将转换为gpu指令,其中可能使用D3D或OpenGL。*我开始学习团结,我想更好地理解什么是在引擎盖之下。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-26 15:51:26

我相信最好的答案会在一本关于游戏引擎的书上找到,但我可以告诉你一般情况下事情是如何工作的。

游戏引擎必须维持一个世界的生存。这意味着,它必须跟踪大量的数据,比如每个对象的位置信息,并以每秒多次更新其位置和其他状态。大部分这些信息,如顶点位置、几何数据和纹理,都存储在GPU (VRAM)上,并保存在那里,以便在必要时进行更新。有一些方法可以有效地做到这一点,例如,您可以在X坐标上向字符的所有顶点添加+1,并且更新是在GPU端并行进行的。您永远不希望更新CPU端的每个顶点的顶点。这就是如何处理实时图形的本质。

因此CPU和GPU是两个非常接近的世界,但不共享它们的内存空间。数据通常从CPU向GPU来回移动(大部分是向GPU移动)。您将希望最小化CPU和GPU之间传输的数据量,并尝试通过着色器完成GPU侧的所有工作。

通常,在游戏引擎中,CPU处理游戏命令、AI和大多数情况下的物理(GPU也可以处理物理)。当GPU呈现并重新计算每顶点和每像素的所有效果时,希望是每秒60次。有时,数据被冗余地保存在双方,以节省一些通信。

现在,为了便于开发,所有这些都隐藏在脚本语言的层下。脚本语言只是被游戏引擎的内部理解来执行我前面提到的。在脚本语言之上,您将拥有带有按钮和许多其他元素的用户界面,从而使游戏设计者的工作更容易。

关键词你应该寻找更好的理解一个游戏引擎:

  1. 事件
  2. 逻辑回路
  3. 渲染回路
  4. 着色器
  5. 碰撞检测
  6. 游戏引擎脚本语言
票数 2
EN

Stack Overflow用户

发布于 2015-02-24 17:17:35

一个游戏引擎通常会做更多的事情,而不仅仅是通过低端渲染命令。你也需要声音和物理。统一提供的不仅仅是渲染设备的抽象(D3D/OpenGL)。它还为您进行了场景管理,以实现高效的渲染。

假设您开始加载一些资产并将它们放到场景中。加载涉及到为GPU上的顶点/法线/动画创建缓冲区,材质的纹理甚至是着色器。最有趣的是,您已经听说过场景图,您的场景中的实体都是在其中管理的。为了有效地呈现对象,需要排除对象(其他实体后面的实体可能根本不会呈现,因为您无论如何都看不到它们)和剔除(视图结果之外的对象)。

我知道这个答案非常广泛,但希望它能给你一些想法,背景是什么。如果您感兴趣,请查看OpenGL (Overview)的现代呈现管道。如果你只是想写一个游戏,这是过头了,一旦你熟悉团结和排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28701663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档