Как я могу изменить разрешение и растянуть всю мою игру на новое разрешение? Я хочу, чтобы моя игра имела базовое разрешение, и когда я изменяю его, растягиваюсь до этого нового разрешения. Я видел несколько похожих вопросов, но во всех ответах предлагалось изменить параметры презентации. Если я это сделаю, разрешение моего экрана изменится, но все остальные мои объекты останутся одинакового размера и начнут рисовать в неправильном положении.
Я использую объект LPD3DXSPRITE для рисования текстур на экране, некоторого текста DirectX и вершин, определенных так:
#define D3DFVF_VERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)
Я попытался поместить D3DXSPRITE_OBJECTSPACE в sprite-> Begin () и поиграть с матрицами проекции, просмотра и мира, но безуспешно.
Может кто-нибудь сказать мне, если этот метод возможен и как я должен это сделать? Я также читал о другом методе, который предлагает рендеринг на поверхность, а затем растяжение поверхности, но я не знаю, как это реализовать. Я новичок в DirectX. Я гуглил второй метод, но не смог найти кого-то, объясняющего это, и я не думаю, что смогу рисовать от спрайта до поверхности.
РЕДАКТИРОВАТЬ:
Мне удалось сделать это, используя методы CreateRenderTarget, SetRenderTarget и StretchRect, сначала печатая на поверхность, а затем растягивая ее на заднем буфере.
Этого можно добиться, используя DIP (независимые от устройства пиксели или независимые от устройства единицы измерения) для измерения координат вместо физических пикселей. Вы также должны пометить вашу игру как DPI-ориентированную, чтобы операционная система не масштабировала ваш пользовательский интерфейс при изменении разрешения. Для получения дополнительной информации о DPI см. Эта статья.
Мне удалось сделать это, используя методы CreateRenderTarget, SetRenderTarget и StretchRect, сначала печатая на поверхность, а затем растягивая ее на заднем буфере.