нашел на rsdn такой пример, но как по мне он не очень удачен, во-первых ddraw.lib устарела и не входит в состав последнего SDK, а во-вторых:
не запускайте при глубине цвета != 32 bpp!!! Тут нет никаких проверок, по хорошему, нужно смотреть поле ddpfPixelFormat в DDSURFACEDESC2
- цитата с форума.
#define INITGUID
#include <ddraw.h>
#include <windows.h>
#pragma comment(lib, "ddraw.lib")
void shade()
{
IDirectDraw7 * direct_draw;
IDirectDrawSurface7 * primary_surface;
DDSURFACEDESC2 surface_descriptor = { sizeof(surface_descriptor) };
DirectDrawCreateEx(0, (void**)&direct_draw, IID_IDirectDraw7, 0);
direct_draw->SetCooperativeLevel(0, DDSCL_NORMAL);
surface_descriptor.dwFlags = DDSD_CAPS;
surface_descriptor.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
direct_draw->CreateSurface(&surface_descriptor, &primary_surface, NULL);
primary_surface->Lock(0, &surface_descriptor, 0, 0);
void * memory = surface_descriptor.lpSurface;
for( int dy = surface_descriptor.dwHeight;
dy;
dy--, memory = (char *)memory + surface_descriptor.lPitch )
{
for( int dx = surface_descriptor.dwWidth; dx; --dx )
if ( (dx ^ dy) & 1 )
*((int *)memory + dx) = -1;
}
primary_surface->Unlock(0);
}
P.S. Не копипастер, не плагиатчик, поэтому приведу ссылку на источник:
http://www.rsdn.ru/forum/winapi/1389656.flat.aspx, если администрацией запрещено, удалите.