c++ - DirectX 拉伸(stretch)像素

标签 c++ directx resolution directx-11 pixel

我刚开始使用 directX,遇到了拉伸(stretch)像素的问题。当我创建窗口和所有 directX 好东西时,我使用两个变量,宽度和高度。对于大多数测试,我将它们设置为 800x600。当我在屏幕上画一个正方形时,它看起来被拉长了。 Res of 800x600

但是当我将分辨率设置为 600x600 时 Res of 600x600

它看起来很正常,呈正方形。这使我得出结论,这是某种像素拉伸(stretch)。在 directX 中,我该如何解决这个问题,并使像素变成正方形。

最佳答案

float aspectRatio = bufferWidth / bufferHeight;

这是完全正常的。投影到标准化屏幕空间后,坐标从 -1.0 到 1.0(从左到右)和 -1.0 到 1.0(从下到上)。您可以看到屏幕上的两个方向具有相同的值范围。这意味着如果您在屏幕上绘制一个高度和宽度相等的正方形,它的宽度将是高度的 aspectRatio 倍。这解释了在 600x600 时表现良好但在 800x600 时出现问题。(宽高比 为 1.33)

如果您真的想要一个正方形,您可以简单地将宽度除以纵横比,在您的情况下为 800/600 (1.33) 以获得宽度和高度相等的多边形.

关于c++ - DirectX 拉伸(stretch)像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421140/

相关文章:

c++ - 如何将参数传递给包装在 std::function<void()> 中的成员函数?

c++ - C++ 中的回调,模板成员? (2)

c++ - 使用 DirectX 渲染单独的纹理

java - 放大小程序的图形大小

c++ - 使用 Cereal 序列化库中的模板化多态类型

c++ - 是否可以在另一个窗口中绘制(使用Opencv/ffmpeg

c++ - 为 C++ 设置 Direct X 时出现问题

c++ - 对象数组 C++

resolution - HTC Desire 屏幕分辨率

css - 分辨率较小,内容尽量适合