2

我画了一个 500 x 500 像素的矩形。

我的窗口是 1920 x 1080。

当我将屏幕大小调整为 1376 x 768 时,500 x 500 像素的图像现在稍微小一些(它已被缩放和压扁).. 我该如何防止这种情况?

我假设这是这种设置的标志,但我找不到我需要的设置:

ZeroMemory( &presParams, sizeof( presParams ) );
presParams.Windowed = TRUE;
presParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
presParams.BackBufferFormat = D3DFMT_UNKNOWN;
presParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE;

d3dObject = Direct3DCreate9( D3D_SDK_VERSION );
hr = d3dObject->CreateDevice(
    D3DADAPTER_DEFAULT,
    D3DDEVTYPE_HAL,
    hWnd, 
    D3DCREATE_HARDWARE_VERTEXPROCESSING, 
    &presParams, 
    &d3dDevice
);  
4

1 回答 1

1

场景的相对大小/形状受后备缓冲区大小和投影矩阵纵横比的影响,因此当您重新调整窗口大小或更改屏幕分辨率时,您需要重置后备缓冲区大小,这将防止场景被拉伸。

presParams.BackBufferWidth = window_width or screen_width;
presParams.BackBufferHeight = window_height or screen_height;

然后,调用 pd3dDeveice->Reset(presParams) 来重置设备。

在此之后,您应该重置投影矩阵以使纵横比 = window_width / window_height 或 screen_width / screen_height,例如:

D3DXMatrixPerspectiveFovLH(&proj_matrix, D3DX_PI / 4, ration, 1.0f, 1000.0f);
于 2013-06-14T01:27:21.550 回答