2017-04-16 6 views
2

문제는 삼각형을 회전시키고 회전이 1.6f 이상이면 깜박 거리기 시작하는 것입니다. 여기 DirectX 11 회전에 의한 객체 깜박임

example

코드의 조각이다

- 여기 렌더러 메인 루프

mCamPosition = D3DXVECTOR3{ 0.0f, 0.0f, -0.5f }; 
mCamTarget = D3DXVECTOR3{ 0.0f, 0.0f, 0.0f }; 
mCamUp = D3DXVECTOR3{ 0.0f, 1.0f,0.0f }; 

D3DXMatrixLookAtLH(&mCamView, &mCamPosition, &mCamTarget, &mCamUp); 
D3DXMatrixPerspectiveFovLH(&mCamProjection, 0.4f * static_cast<float32>(M_PI), 
    static_cast<float32>(pWindow->GetSize().Width)/static_cast<float32>(pWindow->GetSize().Height), 
    1.0f, 
    1000.0f); 

part의를 initalized 된 작은 설정으로

... 
rotation += 0.0005f; 
MeshTransform.SetRotation(rotation); 

Renderer->Clear(); 
Renderer->Draw(Mesh, Shader, &MeshTransform); 
Renderer->Display(); 
... 

- 그려지는 부분

D3DXMATRIX MeshTranslation; 
D3DXMATRIX MeshRotaiton; 
D3DXMATRIX MeshWorld; 

D3DXMatrixIdentity(&MeshWorld); 
D3DXMatrixIdentity(&MeshRotaiton); 
D3DXMatrixIdentity(&MeshTranslation); 

//Translation 
D3DXMatrixTranslation(&MeshTranslation, pTransform->mPosition.X, pTransform->mPosition.Y, 0.0f); 


//Rotation 
D3DXVECTOR3 RotAxis{ 0.0f, 0.0f, 1.0f }; 
D3DXMatrixRotationAxis(&MeshRotaiton, &RotAxis, pTransform->mRotation); 


MeshWorld = MeshRotaiton * MeshTranslation; 


mWVP = MeshWorld * mCamView * mCamProjection; 
D3DXMatrixTranspose(&mCBPerObject.WVP, &mWVP); 

pContext->DeviceContext->UpdateSubresource(pPerObjectBuffer, NULL, nullptr, &mCBPerObject, NULL, NULL); 
pContext->DeviceContext->VSSetConstantBuffers(0, 1, &pPerObjectBuffer); 


pContext->DeviceContext->VSSetShader(pShader->cpVertexShader.Get(), 0, 0); 
pContext->DeviceContext->PSSetShader(pShader->cpPixelShader.Get(), 0, 0); 
...Drawing 

-Shader 파일

cbuffer cbPerObject 
{ 
    float4x4 WVP; 
}; 

struct VS_OUTPUT 
{ 
    float4 Position : SV_POSITION; 
    float4 Color : COLOR; 
}; 

VS_OUTPUT VS(float4 InPosition : POSITION, float4 InColor : COLOR) 
{ 
    VS_OUTPUT Output; 

    Output.Position = mul(InPosition, WVP); 
    Output.Color = InColor; 

    return Output; 
} 

float4 PS(VS_OUTPUT Input) : SV_TARGET 
{ 
    return Input.Color; 
} 

답변

0

근처면에 대한 낮은 값을 시도 ... 투영 행렬의 근거리 비행기를 조정합니다.

+0

나는 더 높은 가치로 시도해 보았는데, 나는 더 낮은 가치를 시도한 것보다 일하지 않았다. –

+0

좋아, 내 대답을 수정했습니다 .. 수정 주셔서 감사합니다 – Nain