Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] DirectDraw 05.02.04 11:16
Автор: Sergio Статус: Незарегистрированный пользователь
|
Люди, подскажите как напрямую получить указатель на видеобуфер и заполнять его, к примеру, 255.
Вот
// получакм рект
GetClientRect(hWnd, &rc);
// блокируем сюрфайс
g_pDDSBack->Lock(&rc, &ddsurfdesc,DDLOCK_WRITEONLY,0);
pByte = (PBYTE) ddsurfdesc.lpSurface; // указатель
memset(pByte, 0xFF,10); // заполняем буфер
g_pDDSBack->Unlock(&rc);
И не получается.....
|
|
Я навскидку уже не помню как там и что, но может и это... 05.02.04 22:33
Автор: S-pent Статус: Незарегистрированный пользователь
|
Я навскидку уже не помню как там и что, но может и это поможет ...
1. Ты палитру инициализируешь ?
2. У тебя одна поверхность (первичная) ?
3. Попробуй вот такой вариант (точек побольше набросай) - заполнение случайными числами
4. Там есть "мертвый угол" какой-то - его нужно учитывать (mempitch)
lpddsprimary->Lock(NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR | LOCK_WAIT, NULL));
int mempitch = (int)ddsd.lPitch;
UCHAR *video_buffer = (UCHAR *)ddsd.lpSurface;
for (int index=0; index < 1000; index++)
{
UCHAR color = rand()%256;
int x = rand()%640;
int y = rand()%480;
video_buffer[x+y*mempitch] = color;
}
lpddsprimary->Unlock(NULL);
|
|
|