DirectX11 纹理采样
来源:互联网 发布:比特币挖矿需要网络吗 编辑:程序博客网 时间:2024/05/14 21:24
纹理采样
1. HLSL纹理采样表示
我们知道,Texture2D对象用于在effect文件中表示纹理。不过,还有一种与纹理相关的SamplerState(采样器)对象。它用于描述如何使用过滤器访问纹理资源。下面是它的一些例子:
// 在倍增、缩减、多级渐进纹理上使用线性过滤。SamplerState mySampler0{ Filter = MIN_MAG_MIP_LINEAR;};// 在缩减上使用线性过滤,倍增和多级渐进纹理上使用点过滤。SamplerState mySampler1{ Filter = MIN_LINEAR_MAG_MIP_POINT;};// 在缩减上使用点过滤,倍增上使用线性过滤,多级渐进纹理上使用点过滤。SamplerState mySampler2{ Filter = MIN_POINT_MAG_LINEAR_MIP_POINT;};// 在倍增、缩减、多级渐进纹理上使用各向异性过滤。SamplerState mySampler3{ Filter = ANISOTROPIC; MaxAnisotropy = 4;};
注意,对于各向异性过滤,我们必须指定各向异性的最大值,这个值介于1至16之间。大数值需要耗费更多的资源,但效果更好。你可以从这些例子中猜到一些其他的标志值,或者你可以在SDK文档中查找D3D11_FILTER枚举类型。我们很快就会看到与采样器相关的其他属性,但是对于我们的第一个演示程序来说现在的这些内容已经足够了。
现在,传入像素着色器的每个像素都有一对纹理坐标,我们使用如下语法完成实际的纹理采样工作:
Texture2D gDiffuseMap;struct VertexOut{ float4 posH : SV_POSITION; float3 posW : POSITION; float3 normalW : NORMAL; float2 Tex : TEXCOORD;};SamplerState samAnisotropic{ Filter = ANISOTROPIC; MaxAnisotropy = 4;};float4 PS(VertexOut pin, uniform int gLightCount) : SV_Target{ // 从纹理中提取颜色 float4 texColor = gDiffuseMap.Sample(samAnisotropic, pin.Tex); ...
可以看到,我们使用Texture2D::Sample方法对一个纹理进行采样。通过第一个参数传递SamplerState对象,通过第二个参数传递像素的纹理坐标(u,v)。该方法使用由SamplerState对象指定的过滤方式从纹理贴图中返回位于点(u,v)处的插值颜色。
2. DirectX11纹理采样表示
注意:HLSL类型SamplerState对应ID3D11SamplerState接口。采样状态也可以在应用程序中由ID3DX11EffectSamplerVariable::SetSampler方法进行设置。见D3D11_SAMPLER_DESC和ID3D11Device::CreateSamplerState。和渲染状态一样,必须在初始化阶段就创建采样状态。
0 0
- DirectX11 纹理采样
- DirectX11 采样状态对象
- 纹理采样
- 纹理采样
- DirectX11 获得纹理描述
- DirectX11 多重纹理
- DirectX11 纹理坐标
- DirectX11 压缩纹理格式
- DirectX11-Sample-Tutorial07-纹理+光照
- DirectX11 纹理和资源概述
- DirectX11 创建和启用纹理
- DirectX11 把纹理作为材质
- DirectX11 对纹理进行变换
- 【DirectX11】第六篇 纹理映射
- 纹理采样过滤方式
- 纹理的各向异性采样
- 纹理采样和过滤
- 纹理采样和过滤
- C++primer第五版笔记-第八章IO库
- MFC制作加法计算器
- C#字符串比较
- ACM HDU 2063 过山车(简单的二分匹配)
- Java国际化语言切换
- DirectX11 纹理采样
- hdu 5467 Clarke and hunger games (lct)
- Android中Activity四种启动模式(LaunchMode)和taskAffinity属性
- Java字符串格式化
- 学习ThinkPHP3.2.2:video9,配置文件存放位置的变化
- PHP excel读取excel文件转换为数组
- 斐波纳契数列
- 学习ThinkPHP3.2.2:video9,用“C”函数读取配置文件内容
- 【bzoj3316】 JC loves Mkk 单调队列+二分答案