我使用D3DXCreateSphere
方法来创建球体网格。我想在它上面应用地球纹理。我计算在像素着色器中的纹理坐标与以下代码:球体纹理映射错误
sampler ShadeSampler = sampler_state
{
Texture = (ShadeTex);
AddressU = Mirror;
AddressV = Mirror;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = LINEAR;
};
PS_OUTPUT PSMain(VS_OUTPUT input){
PS_OUTPUT output = (PS_OUTPUT)0;
vector uv;
uv.x = 0.5 + atan2(input.normal.z, input.normal.x)/piMul2;
uv.y = 0.5f - asin(input.normal.y)/pi;
vector b = tex2D(ShadeSampler, uv.xy);
output.diffuse = b * input.diffuse;
return output;
}
我使用D3DXCreateTextureFromFileEx
方法来创建IDirect3DTexture9
,但是当我通过使用D3DX_DEFAULT
值用于MipLevels
参数使mip映射能力,渲染结果变为稍错误的是在接缝处总是有一条像素线。下面的图片显示了这个问题,但是当我通过使用参数MipLevels
的D3DX_FROM_FILE
值来禁用mipmap功能时,该行消失。我不知道为什么会发生这种情况,有什么建议?
这不是相同的问题[这个问题](http://stackoverflow.com/questions/19702285/why-the-sphere-texture-map-can-not-actually-比赛)?两者都有一个线条的神器截图。 –
@DavidM这两个问题都是由我发布的,他们是由不同的原因引起的 – cloud