2
문제는 삼각형을 회전시키고 회전이 1.6f 이상이면 깜박 거리기 시작하는 것입니다. 여기 DirectX 11 회전에 의한 객체 깜박임
코드의 조각이다- 여기 렌더러 메인 루프
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;
}
나는 더 높은 가치로 시도해 보았는데, 나는 더 낮은 가치를 시도한 것보다 일하지 않았다. –
좋아, 내 대답을 수정했습니다 .. 수정 주셔서 감사합니다 – Nain