我使用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