zoukankan      html  css  js  c++  java
  • 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()两个方法将顶点着色器和像素着色器绑定到管线上

  • 相关阅读:
    【C语言学习】-08 指针
    【C语言学习】-07 结构体
    【C语言学习】-06 函数
    百度地图添加大头针和视图
    ios8中修改的 推送和地图
    ios 有关设备信息
    详解Objective-C runtime
    IOS7 ~ Xcode5 制作 framework
    IOS 取消表格单元格 TableViewCell 去掉高亮状态 点击Cell取消选择状态
    验证码设计(转)
  • 原文地址:https://www.cnblogs.com/k5bg/p/11101259.html
Copyright © 2011-2022 走看看