DirectX11:着色器

一.简介

在DirectX 11 SDK中,支持三种基础着色器:顶点着色器(Vertex Shader) 像素着色器(Pixel Shader / Fragment Shader) 几何着色器(Geometry Shader)

 

顶点着色器通过顶点作为输入数据,只要将每个顶点缓存传入GPU就会执行

像素着色器使用一个像素作为输入数据

几何着色器使用基元(Primitive,点/线/面)作为输入

在Direct3D 11中,GPU必须包含一个正确的顶点和像素着色器,而几何着色器是可选的

 

二.顶点着色器

顶点着色器类似C语言的一个函数,通过顶点作为参数输入这个函数,并且返回编程后的顶点信息.

当程序通过顶点着色器传入顶点缓冲数据时,GPU就会迭代顶点缓冲数据,并为每个顶点执行一次着色器函数

顶点着色器最主要是用于坐标变换

flaot4 VS(float4 Pos : POSITION) : SV_POSITION
{
     return Pos;       
}

 

三.像素着色器

一个三角形,包含了三个顶点,把三个顶点连载一起称为光栅化

像素着色器通过输入的像素颜色值,通过GPU计算颜色并返回渲染管线

float4 PS(float4 Pos : SV_POSITION) : SV_Target
{
  return float4(1.0f, 1.0f, 0.0f, 1.0f);
}

 

 

四.几何着色器

 

 

五.编译着色器

着色器编写的代码(HLSL)保存在一个文本文件中,可以通过Direct3D 11中的D3DX11CompileFronFile()进行编译

// Create the vertex shader
if(FAILED(D3DX11CompileFromFile("Tutorial03.fx", NULL, NULL, "VS", "vs_4_0", D3DCOMPILE_ENABLE_STRICTNESS, NULL, NULL, &pVSBlob, &pErrorBlob, NULL)))
    return FALSE;

// Create the pixel shader
if(FAILED(D3DX11CompileFromFile("Tutorial03.fx", NULL, NULL, "PS", "vs_4_0", D3DCOMPILE_ENABLE_STRICTNESS, NULL, NULL, &pVSBlob, &pErrorBlob, NULL)))
    return FALSE;

 

 

六.绑定着色器

通过VSSetShader()和PSSetShader()两个方法将顶点着色器和像素着色器绑定到管线上

 

转载于:https://www.cnblogs.com/k5bg/p/11101259.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值