2014-01-29 3 views
0

나는 directX로 시작하고 확장 된 픽셀 문제가 발생했습니다. 창과 모든 directX 항목을 만들 때 너비와 높이의 두 변수를 사용합니다. 대부분의 테스트에서 800x600으로 설정했습니다. 화면에 사각형을 그릴 때 뻗어 보입니다. 내가 600 × 600 Res of 600x600DirectX 늘이기 픽셀

에 resoltion를 설정할 때 Res of 800x600

그러나 정상 사각 보인다. 이것은 내가 픽셀 스트레칭의 일종이라고 결론을 이끌어 냈습니다. DirectX에서 어떻게이 문제를 해결하고 픽셀을 사각형으로 만듭니다.

+1

두 가지 질문 : 1) 어떻게 프로젝션 매트릭스를 만들 수 있습니까? 2) 크기를 조절할 때 백 버퍼를 다시 만들고 있습니까? –

답변

1
float aspectRatio = bufferWidth/bufferHeight; 

이것은 완전히 정상입니다. 정규화 된 화면 공간으로 투영하면 좌표는 -1.0에서 1.0 (왼쪽에서 오른쪽으로) 및 -1.0에서 1.0 (맨 아래로)으로 이동합니다. 화면의 두 방향 모두 동일한 값 범위를 가지고 있음을 알 수 있습니다. 즉, 같은 높이와 너비로 화면에 정사각형을 그릴 경우 aspectRadio 번이 높이보다 너비가 더 큽니다. 이것은 600 × 600의 좋은 행동하지만, 800 × 600에서 문제를 설명합니다. (aspectRatio 1.33의)

당신이 정말로 사각형을 원한다면, 당신은 단순히 당신의 화면 비율로 폭을 분할되어 무엇을 할 수 귀하의 경우 800/600입니다 (1.33) 동일한 너비와 높이의 다각형을 얻습니다.

1

창 크기에 따라 뷰포트를 설정할 수 있습니다. 예를 들어

:

// Setup the viewport for rendering. 
viewport.Width = (float)screenWidth; 
viewport.Height = (float)screenHeight; 
viewport.MinDepth = 0.0f; 
viewport.MaxDepth = 1.0f; 
viewport.TopLeftX = 0.0f; 
viewport.TopLeftY = 0.0f; 

// Create the viewport. 
m_deviceContext->RSSetViewports(1, &viewport); 

당신은 자세한 내용은 Rastertek Tutorials 확인할 수 있습니다.

관련 문제