0

我对 3D 编程非常陌生,即 DirectX。我一直在尝试遵循有关如何做基本事情的教程,并且一直在查看 Microsoft 提供的示例。我遇到的一个大问题是如何判断应该在实际游戏代码中进行哪些计算,以及应该在 HLSL 中进行哪些计算。我无法理解应该在哪里做什么,因为在我看来,您可以在着色器文件中包含几乎所有与计算有关的代码,或者您可以将它们全部包含在可执行代码中并且只发送熊像素和顶点着色器的最小值。怎么知道什么代码应该去哪里?如果你需要一个例子,我会试着找到一个。

4

1 回答 1

2

“代码” - CPU代码

“HLSL” -GPU代码

基本上,您希望所有纯图形都发生在 GPU 上。也就是说,当您想要渲染的信息已发送到 GPU 时,它应该接管并使用该信息来生成最终图像。

你想让 CPU 对 GPU 说“这就是我要渲染的内容,这是实现它所需的一切”,然后确保告诉 GPU “这就是你渲染它的方式”

一些示例(无论如何都不是完整或最终列表):

中央处理器:

  • 任何处理窗口打开/关闭/调整大小的事情
  • 来自鼠标、键盘的用户输入
  • 读取和设置配置
  • 生成和更新视图矩阵
  • 应用逻辑
  • 设置和初始化渲染(纹理、缓冲区等)
  • 生成顶点数据(位置、纹理坐标等)
  • 创建图形实体(三角形、纹理、颜色等)
  • 处理动画(时间步长,交换缓冲区)
  • 为每一帧向 GPU 发送更新的数据

显卡:

  • 使用视图矩阵将内容放在屏幕上的正确位置
  • 从顶点数据插值到片段数据
  • 着色(通常,这是最复杂的部分)
  • 计算并写入最终像素颜色
于 2013-04-30T16:42:41.297 回答