пользователей: 21209
предметов: 10450
вопросов: 177346
Конспект-online
зарегистрируйся или войди через vk.com чтобы оставить конспект.
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Программирование в интернет:
» ПИ
» ОКГТМ
» КИНФС

Перемикання та копіювання поверхонь у DirectDraw

Переключение поверхностей. После прорисовки данных во вторичном буфере необходимо переключить поверхности. В этот момент вторичная поверхность становится первичной и все, что было нарисовано во вторичной поверхности отображается на экране. Для переключения поверхностей используется метод Flip:

primsurf-> Flip (NULL, DDFLIP_WAIT)

В общем виде метод выглядит следующим образом:

HRESULT Flip (LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,

DWORD dwFlags)

Первый параметр - указатель на интерфейс поверхности, на которую нужно переключиться. Этот параметр эффективен, когда есть более двух сопряженных поверхностей, то есть более одного заднего буфера. В рассматриваемом случае, только один задний буфер, поэтому переключение может быть только на него, и этот параметр равен 0.

Второй параметр - это флаги переключения. Здесь можно указать только одно значение: ddflipwait.

Примеры копирования поверхностей.

Если картинка меньше, чем разрешение экрана, то ее нужно будет масштабировать, а это умеет делать метод Bit. Для масштабирования заданной поверхности с картинкой на весь экран метод Bit вызывается со следующими параметрами:

backsurf-> Blt (& dst, imagesurf 0, ddbltjwait, & bltfx)

Первый параметр задает параметры области приема. В рассматриваемом случае, область приема равна всему окну, поэтому изображение будет растянуто. Второй и третий параметры - это поверхность, с которой идет копирования и область, которую нужно взять из источника. В рассматриваемом примере, указанный ноль, а значит будет взята вся область. Четвертый - указатель на структуру, в которой задаются дополнительные параметры и эффекты копирования.


17.01.2016; 23:19
хиты: 10
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2016. All Rights Reserved. помощь