【发布时间】:2014-12-03 02:49:17
【问题描述】:
我正在尝试以我所知道的最简单(也是最快)的方式实现基于 GPU 的高度图。我将 (.png, D3DX11CreateShaderResourceViewFromFile()) 纹理传递到着色器中,并尝试对其进行采样以获得当前像素值。看到float4,我目前正在从一个通道分配一个颜色值来抵消y 值。
Texture2D colorMap : register(t0);
SamplerState colorSampler : register(s0);
...
VOut VShader(float4 position : POSITION, float2 Texture : TEXCOORD0, float3 Normal : NORMAL)
{
VOut output;
float4 colors = colorMap.SampleLevel(colorSampler, float4(position.x*0.001, position.z*0.001, 0,0 ),0);
position.y = colors.x*128;
output.position = mul(position, WVP);
output.texture0 = Texture;
output.normal = Normal;
return output;
}
纹理已正确导入,并且我插入了另一个纹理并且能够成功地将纹理与另一个纹理混合(通过值相乘),所以我知道 float4 结构包含能够进行算术运算的类型的值执行它。
在 Vertex 函数中,尝试提取值不会在网格上产生任何结果:
这个概念在纸上看起来很简单......
【问题讨论】:
标签: c++ directx-11 hlsl vertex-shader heightmap