HGE::Texture_Lock

Захватывает текстуру для прямого доступа.

DWORD *Texture_Lock(
  HTEXTURE texture,
  bool bReadOnly = true,
  int left = 0,
  int top = 0,
  int width = 0,
  int height = 0
);

Параметры

texture
Идентификатор текстуры, которую необходимо захватить.
bReadOnly
Необязательный параметр. Если равен true, текстура не будет обновлена после освобождения.
left
Необязательный параметр, X-координата верхнего левого угла области текстуры, которую надо захватить.
top
Необязательный параметр, Y-координата верхнего левого угла области текстуры, которую надо захватить.
width
Необязательный параметр, ширина области текстуры, которую надо захватить.
height
Необязательный параметр, высота области текстуры, которую надо захватить.

Возвращаемое значение

В случае успеха, возвращается указатель на захваченные данные текстуры. В противном случае 0.

Примечания

Данные захваченной текстуры - массив типа DWORD значений цвета. Захватить можно только 32-битную текстуру, так что захват не работает на некоторых очень старых видоекартах, таких как Intel Solano. Цели рендеринга и сжатые текстуры также не могут быть захвачены.

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

DWORD color = locked_ptr[y*tex_width+x];

Где tex_width ширина текстуры, которую можно узнать вызывая функцию Texture_GetWidth.

Если вы не собираетесь изменять текстуру, а просто собираетесь прочитать значения нескольких пикселей - всегда утанавливайте bReadOnly в true, это позволит опустить обновление текстуры в видеопамяти, и будет работать быстрее. Также, если вы изменяете только часть текстуры, всегда указывайте область. Тогда только указанная область будте обнавлена в видеопамяти.

Когда обращение к текстуре закончено, необходимо освободить ее используя вызов функции Texture_Unlock.

Требования

Заголовок: hge.h
Библиотека импорта: hge.lib

Смотрите также

Texture_Unlock