我刚开始使用directX并遇到拉伸像素的问题。当我创建窗口和所有directX好东西时,我使用两个变量,宽度和高度。对于大多数测试,我将它们设置为800x600。当我在屏幕上画一个正方形时,它看起来很紧张。
然而,当我将resoltion设置为600x600时
看起来很正常。这使我得出结论,它是某种像素拉伸。在directX中如何解决这个问题,并使像素成为方形。
答案 0 :(得分:1)
float aspectRatio = bufferWidth / bufferHeight;
这是完全正常的。一旦投影到标准化的屏幕空间,坐标将从-1.0到1.0(从左到右)和-1.0到1.0(从下到上)。您可以看到屏幕上的两个方向都具有相同的值范围。这意味着如果您在屏幕上绘制一个高度和宽度相等的正方形,则宽度
如果你真的想要一个正方形,你可以做的只是将宽度除以宽高比,在你的情况下为800/600
(1.33),得到宽度和高度相等的多边形。
答案 1 :(得分: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了解详情。