我绘制一个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
);
答案 0 :(得分:1)
场景的相对大小/形状受投影矩阵的后缓冲区大小和宽高比影响,因此当您重新调整窗口大小或更改屏幕分辨率时,需要重置缓冲区大小,这样可以防止被拉伸的场景。
presParams.BackBufferWidth = window_width or screen_width;
presParams.BackBufferHeight = window_height or screen_height;
然后,调用pd3dDeveice->重置(presParams)以重置设备。
在此之后,您应该重置投影矩阵以使宽高比= window_width / window_height或screen_width / screen_height,例如:
D3DXMatrixPerspectiveFovLH(&proj_matrix, D3DX_PI / 4, ration, 1.0f, 1000.0f);