关于Directx中shader的输入与输出
关于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的输入与输出相关推荐
- python输入输出-2. Python中的基本输入、输出、格式化输出
本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本输入.输出.格式化输出 1. 输入 使用input([prompt])读取一行,将其转换为string类型并返回,inpu ...
- python输入,Python中的基本输入和输出
从<安装Python和写出第一个Python程序>开始,我们就在屏幕上面开始输出了"Hello World",这个就使用到了print()函数向屏幕输出一些字符,这就是 ...
- python中输出字体大小改变_python中变量的输入与输出
python中变量的输入与输出 <1>输出 python中变量的输出 # 打印提示print('hello world')print('给我的卡---印度语,你好的意思')# 输出变量ur ...
- android手机设置中的语音输入与输出
android手机设置中的语音输入与输出: 设置--语音输入与输出--文字转语音设置--安装语音数据库 在电子市场下载安装,安装成功后,将键盘改为Android键盘,就会看到一个麦克风一样的图标,点击 ...
- python怎么输出图像测试_如何在python中对作为输入和输出的图像进行单元测试?...
我正在用Python对对象检测code(接受答案)进行单元测试.我知道在单元测试中,我们基本上是把测试参数放入我们在程序中定义的函数,然后输入预期的结果.如果预期的结果是输出,我们得到OK,否则,我们 ...
- java中文件的输入和输出
以下所有对象需要关闭(close)的,都使用jdk1.7的try-with-resource来进行释放 文件的输入(读取)需要使用到: 创建一个File对象,在初始化的时候赋值一个文件路径. 创建Fi ...
- 关于C中字符串的输入和输出使用的函数不同所造成的影响
今晚学习了一下字符数组的应用,根据要求(输入一行字符,统计有多少单词)编写几行代码,如下: #include<math.h> #include <stdio.h> #inclu ...
- 在java中数组的输入与输出_Java 数组的输入输出
Java中要对控制台进行输入操作的话要调用Scanner类,定义一个扫描的对象,例: //要导入java.util.Scanner;Scanner scanner = new Scanner(Syst ...
- MyBatis之输入与输出(resultType、resultMap)映射
2019独角兽企业重金招聘Python工程师标准>>> 在MyBatis中,我们通过parameterType完成输入映射(指将值映射到sql语句的占位符中,值的类型与dao层响应方 ...
最新文章
- UIBezierPath介绍
- 3a算法 isp_Isp图像算法工程师
- Sharepoint 2010 隐藏基本搜索中心搜索结果左侧的分类条件
- CRM Web Client UI异步搜索介绍
- 数据预测之BP神经网络具体应用以及matlab实现
- hdu3790最短路径问题(迪杰斯特拉算法+详解+代码)
- esxi 5.5运行linux拯救模式,启用Esxi 5.5 SSH 功能
- 在线等差数列项生成器
- C# 删除DataTable中的空行
- python调用dll时路径问题_使用ctypes(python)在带括号的路径中加载dll时出错
- VSCode使用Vim插件心得
- 墨菲定律: If anything can go wrong,it will.
- iphone和ipad的一些区别
- 实战干货 | 这位成功转型机器学习的老炮,想把他多年的经验分享给你
- ruby on rails_如何将刺激添加到Ruby on Rails应用程序
- 华为新系统鸿蒙接入,魅族宣布接入鸿蒙系统,支持华为,给力!
- 大数据实战项目------中国移动运营分析实时监控平台 || 项目背景
- CAShapeLayer和UIBezierPath
- 网络舆情监测方案解决方案
- Web安全之SQL注入漏洞学习(七)-堆叠注入
热门文章
- fedora 16 安装后的基本配置
- 图学习笔记(一):图
- C++ 缺省参数及函数重载分析
- 敢不敢挑战,半年学好英语。
- Vue 生命周期流程(面向对象编程)
- c语言马青公式计算圆周率,数学圆周率计算马青公式π/4=4arctan1/5-arctan1/239如何得出的?...
- 用马青公式计算π的c程序
- 头像哟(^U^)ノ~YO
- GitLab服务器安装完成之后;瓦力系统的安装(之一)
- 内蒙古联通云计算机,中国联通西北(呼和浩特)云计算基地