关于shaderModel5.0中VertexShader与PixelShader的输入输出:

在sm_5_0中各阶段的输出与输入要完全按照对应关系对齐才能有效读取数据。如

VS_OUTPUT

{

float4 Pos : SV_POSITION;
float4 color : COLOR0;
float4 tex : TEXCOORD0;

float4 color2 : COLOR1;

}

struct PS_INPUT
{
float4 Pos : SV_POSITION;
float4 color : COLOR0;
float4 color2 : COLOR1;
float4 tex : TEXCOORD0;
};

在以前写direct9的时候这里的对应关系完全没什么问题。即out.Pos ->in.Pos; out.color->in.color; out.color2->in.color2; out.tex->in.tex,然而在DirectX11中使用sm5.0的时候这里的对应关系完全不对。进过测试发现对应关系为out.pos->in.pos; out.color->in.color;out.color2->in.tex; out.tex->in.color2,

从结果上来看这里的对应关系只与成员在struct中的位置有关系而与后面的semantic没太大关系。然而试过把后面的semantic去掉发现又编译不过。

对于这些现象的一些猜想:

1、在direct9时代包括shader中的constant 以及输入输出都是使用寄存器来实现的。因此无论在struct中个成员的排序如何都不会影响到最终的结果。每个成员的数据都是根据后面的semantic对应到相应的寄存器中去的。而在DirectX10以后弱化了寄存器的概念很多东西更多的是使用buffer来实现的。因此这个过程中为了效率是不是把shader的输入输出也是按buffer来处理的。把输出的结果和输入的数据都是按一个整体的buffer来传递每个成员变量都是按自身在buffer中的偏移来确定的,至于后面的semantic的多用好像就只有限制数据的量了。

个人建议:

以后写shader的时候把输入输出的struct搞一样吧。

关于Directx中shader的输入与输出相关推荐

  1. python输入输出-2. Python中的基本输入、输出、格式化输出

    本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本输入.输出.格式化输出 1. 输入 使用input([prompt])读取一行,将其转换为string类型并返回,inpu ...

  2. python输入,Python中的基本输入和输出

    从<安装Python和写出第一个Python程序>开始,我们就在屏幕上面开始输出了"Hello World",这个就使用到了print()函数向屏幕输出一些字符,这就是 ...

  3. python中输出字体大小改变_python中变量的输入与输出

    python中变量的输入与输出 <1>输出 python中变量的输出 # 打印提示print('hello world')print('给我的卡---印度语,你好的意思')# 输出变量ur ...

  4. android手机设置中的语音输入与输出

    android手机设置中的语音输入与输出: 设置--语音输入与输出--文字转语音设置--安装语音数据库 在电子市场下载安装,安装成功后,将键盘改为Android键盘,就会看到一个麦克风一样的图标,点击 ...

  5. python怎么输出图像测试_如何在python中对作为输入和输出的图像进行单元测试?...

    我正在用Python对对象检测code(接受答案)进行单元测试.我知道在单元测试中,我们基本上是把测试参数放入我们在程序中定义的函数,然后输入预期的结果.如果预期的结果是输出,我们得到OK,否则,我们 ...

  6. java中文件的输入和输出

    以下所有对象需要关闭(close)的,都使用jdk1.7的try-with-resource来进行释放 文件的输入(读取)需要使用到: 创建一个File对象,在初始化的时候赋值一个文件路径. 创建Fi ...

  7. 关于C中字符串的输入和输出使用的函数不同所造成的影响

    今晚学习了一下字符数组的应用,根据要求(输入一行字符,统计有多少单词)编写几行代码,如下: #include<math.h> #include <stdio.h> #inclu ...

  8. 在java中数组的输入与输出_Java 数组的输入输出

    Java中要对控制台进行输入操作的话要调用Scanner类,定义一个扫描的对象,例: //要导入java.util.Scanner;Scanner scanner = new Scanner(Syst ...

  9. MyBatis之输入与输出(resultType、resultMap)映射

    2019独角兽企业重金招聘Python工程师标准>>> 在MyBatis中,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方 ...

最新文章

  1. UIBezierPath介绍
  2. 3a算法 isp_Isp图像算法工程师
  3. Sharepoint 2010 隐藏基本搜索中心搜索结果左侧的分类条件
  4. CRM Web Client UI异步搜索介绍
  5. 数据预测之BP神经网络具体应用以及matlab实现
  6. hdu3790最短路径问题(迪杰斯特拉算法+详解+代码)
  7. esxi 5.5运行linux拯救模式,启用Esxi 5.5 SSH 功能
  8. 在线等差数列项生成器
  9. C# 删除DataTable中的空行
  10. python调用dll时路径问题_使用ctypes(python)在带括号的路径中加载dll时出错
  11. VSCode使用Vim插件心得
  12. 墨菲定律: If anything can go wrong,it will.
  13. iphone和ipad的一些区别
  14. 实战干货 | 这位成功转型机器学习的老炮,想把他多年的经验分享给你
  15. ruby on rails_如何将刺激添加到Ruby on Rails应用程序
  16. 华为新系统鸿蒙接入,魅族宣布接入鸿蒙系统,支持华为,给力!
  17. 大数据实战项目------中国移动运营分析实时监控平台 || 项目背景
  18. CAShapeLayer和UIBezierPath
  19. 网络舆情监测方案解决方案
  20. Web安全之SQL注入漏洞学习(七)-堆叠注入

热门文章

  1. fedora 16 安装后的基本配置
  2. 图学习笔记(一):图
  3. C++ 缺省参数及函数重载分析
  4. 敢不敢挑战,半年学好英语。
  5. Vue 生命周期流程(面向对象编程)
  6. c语言马青公式计算圆周率,数学圆周率计算马青公式π/4=4arctan1/5-arctan1/239如何得出的?...
  7. 用马青公式计算π的c程序
  8. 头像哟(^U^)ノ~YO
  9. GitLab服务器安装完成之后;瓦力系统的安装(之一)
  10. 内蒙古联通云计算机,中国联通西北(呼和浩特)云计算基地