DirectX 12学习3--缓冲区,着色器和HLSL

【声明】本文是入门级学习记录,参考自http://www.rastertek.com/dx11s2tut04.html
如果需要深入学习,请找专业书籍。

名词解释

顶点缓冲区

这个类似于opengl的顶点缓冲数组。为了说明这个概念,让我们以球的3D模型为例:
在这里插入图片描述
3D球形模型实际上由数百个三角形组成:
通常我们使用的stl格式的文件,都是这样的。
在这里插入图片描述
球体模型中的每个三角形都有三个点,我们将每个点称为顶点。因此,要渲染球体模型,我们需要将形成球体的所有顶点放入一个特殊的数据数组中,该数据数组称为顶点缓冲区。一旦球体模型的所有点都在顶点缓冲区中,我们就可以将顶点缓冲区发送到GPU,以便它可以渲染模型。

索引缓冲区

索引缓冲区与顶点缓冲区有关。它们的目的是记录顶点缓冲区中每个顶点的位置。然后,GPU使用索引缓冲区快速找到顶点缓冲区中的特定顶点。索引缓冲区的概念类似于在书中使用索引的概念,它有助于以更快的速度找到您要查找的主题。DirectX文档说,使用索引缓冲区还可以增加将顶点数据缓存在视频内存中更快位置的可能性。因此,出于性能方面的考虑,强烈建议使用它们。

顶点着色器

顶点着色器是一些小型程序,主要用于将顶点从顶点缓冲区转换为3D空间。还可以执行其他计算,例如为每个顶点计算法线。GPU将为需要处理的每个顶点调用顶点着色器程序。例如,一个拥有5,000个三角形面片的模型将每帧运行您的顶点着色器程序15,000次,以绘制单个模型。因此,如果将图形程序锁定为60 fps,它将每秒调用顶点着色器900,000次,仅绘制5,000个三角形。如您所知,编写高效的顶点着色器很重要。

像素着色器

像素着色器是编写的小程序,用于对我们绘制的多边形进行着色。它们由GPU针对将绘制到屏幕上的每个可见像素运行。计划对多边形面进行的着色,纹理化,照明和大多数其他效果均由像素着色器程序处理。由于必须调用像素着色器,因此必须有效地编写像素着色器。

HLSL

HLSL是我们在DirectX 11中用于编码这些小型顶点和像素着色器程序的语言。语法与带有一些预定义类型的C语言几乎完全相同。HLSL程序文件由全局变量,类型定义,顶点着色器,像素着色器和几何着色器组成。因为这是第一个HLSL教程,所以我们将使用DirectX 10(我首先尝试用12)来做一个非常简单的HLSL程序。

更新的框架

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值