HLSL中采样器关联纹理的方法
来源:互联网 发布:银行网络宣传方法 编辑:程序博客网 时间:2024/06/07 07:56
HLSL中的采样器实际上一个结构类型,PixelShader程序使用采样器指定被采样纹理、纹理过滤方式和纹理寻址模式,采样器的使用语法大致如下:
texture tex0; // 声明一个纹理对象
sampler2D s_2D = sampler_state // 声明一个采样器对象
{
Texture = <tex0>; // 指定被采样的纹理
MinFilter = Linear; // 纹理过滤方式
MagFilter = Linear;
AddressU = Wrap; // 纹理寻址模式
AddressV = Wrap;
};
float4 PS_Main(float2 tex : TEXCOORD0) : COLOR
{
return tex2D(s_2D, texcoord); // 像素渲染程序返回结果为纹理采样颜色
}
以上像素渲染程序代码中,并没有明确指定采样器s_2D对应的是纹理(tex0对象并没有被赋值),然而在多纹理采样的程序中,是需要明确指定采样器所采样的纹理对应第几个通道(最多8个通道,通过Device的SetTexture指定)的纹理。 有两种方法指定采样器对应的纹理:
1)通过指定采样器寄存器来绑定所采样的纹理:
sampler2D sColor : register(s0); // 绑定通道0中的纹理
sampler2D sNormal : register(s1); // 绑定通道1中的纹理
2)通过ConstantTable接口获取像素渲染程序中全局texture对象的RegisterIndex,从而把纹理设置到相应的通道:
LPD3DXCONSTANTTABLE pConstantTable = NULL;
D3DXCompileShaderFromFile(
"ps_multitex.txt",
0,
0,
"PS_Main",
"ps_1_1",
D3DXSHADER_DEBUG,
&shader,
&errorBuffer,
&pConstantTable);
D3DXHANDLE hTex0 = pConstantTable->GetConstantByName(0, "tex0");
UINT count;
D3DXCONSTANT_DESC Tex0Desc;
pConstantTable->GetConstantDesc(hTex0, &Tex0Desc, &count);
pDevice->SetTexture(Tex0Desc.RegisterIndex, pTexture0); // 设置纹理到tex0对象对应的通道
texture tex0; // 声明一个纹理对象
sampler2D s_2D = sampler_state // 声明一个采样器对象
{
Texture = <tex0>; // 指定被采样的纹理
MinFilter = Linear; // 纹理过滤方式
MagFilter = Linear;
AddressU = Wrap; // 纹理寻址模式
AddressV = Wrap;
};
float4 PS_Main(float2 tex : TEXCOORD0) : COLOR
{
return tex2D(s_2D, texcoord); // 像素渲染程序返回结果为纹理采样颜色
}
以上像素渲染程序代码中,并没有明确指定采样器s_2D对应的是纹理(tex0对象并没有被赋值),然而在多纹理采样的程序中,是需要明确指定采样器所采样的纹理对应第几个通道(最多8个通道,通过Device的SetTexture指定)的纹理。 有两种方法指定采样器对应的纹理:
1)通过指定采样器寄存器来绑定所采样的纹理:
sampler2D sColor : register(s0); // 绑定通道0中的纹理
sampler2D sNormal : register(s1); // 绑定通道1中的纹理
2)通过ConstantTable接口获取像素渲染程序中全局texture对象的RegisterIndex,从而把纹理设置到相应的通道:
LPD3DXCONSTANTTABLE pConstantTable = NULL;
D3DXCompileShaderFromFile(
"ps_multitex.txt",
0,
0,
"PS_Main",
"ps_1_1",
D3DXSHADER_DEBUG,
&shader,
&errorBuffer,
&pConstantTable);
D3DXHANDLE hTex0 = pConstantTable->GetConstantByName(0, "tex0");
UINT count;
D3DXCONSTANT_DESC Tex0Desc;
pConstantTable->GetConstantDesc(hTex0, &Tex0Desc, &count);
pDevice->SetTexture(Tex0Desc.RegisterIndex, pTexture0); // 设置纹理到tex0对象对应的通道
0 0
- HLSL中采样器关联纹理的方法
- DirectX 3D_基础之像素着色器 多重纹理 像素着色器的输入和输出 HLSL采样器对象
- 纹理的各向异性采样
- DirectX 3D_基础之效果框架 手法和路径 HLSL的内置对象(纹理对象 采样器对象与采样器状态 顶点着色器对象和像素着色器对象)效果文件中的设备状态
- 关于纹理采样器状态
- 纹理采样
- 纹理采样
- 纹理采样的理论与实现
- OSG环境下GLSL实现几何着色器的纹理采样
- 纹理采样过滤方式
- 纹理采样和过滤
- DirectX11 纹理采样
- 纹理采样和过滤
- 2D纹理采样
- Hadoop中一些采样器的实现
- Hadoop中一些采样器的实现
- Hadoop中一些采样器的实现
- DirectX 3D_基础之HLSL(高级着色语言) HLSL着色器程序的编制 HSLS变量 HLSL入口函数 HLSL程序编译 变量常量类型 设置方法 前缀 关键字 类型 语句 类型转换
- 智能社JavaScript学习笔记——12-DOM操作应用
- UISearchbar去除背景色的方法,适合iOS5/6/7/8.0beta
- Oracle学习笔记(13)------------ 视图、同义词、索引
- 归并排序
- STL 之generate和generate_n
- HLSL中采样器关联纹理的方法
- spark程序对hadoop环境的依赖,导致checkpoint失败问题的解决
- CreateEvent
- 题目1518:反转链表
- 2011斯坦福大学iOS应用开发教程学习笔记(第六课)故事版
- Pyc文件 编译和运行
- VC 无法查找或打开 PDB 文件
- ArcSDE 图层创建、注册、插入数据与删除数据
- STL 之find,find_if,find_end,find_first_of