Перейти к содержанию
СофтФорум - всё о компьютерах и не только

программирование DirectX


Рекомендуемые сообщения

Подскажите кто встречался с подобной проблемой

создаю поверхность(LPDIRECTDRAWSURFACE7) подключаю палитру(LPDIRECTDRAWPALETTE)

блокирую поверхность записываю в видео буфер данные а изображение не выводится что может быть?

Все пересмотрел и проверил

Ссылка на комментарий
Поделиться на другие сайты

вот кодучастка программы где должны выводится пиксели со случайными координаты

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

WNDCLASSEX win;

MSG msg;

win.cbSize=sizeof(WNDCLASSEX);

win.style=CS_VREDRAW|CS_HREDRAW|CS_OWNDC|CS_DBLCLKS;

win.lpfnWndProc=proc;

win.cbClsExtra=0;

win.cbWndExtra=0;

win.hInstance=hInstance;

win.hIcon=LoadIcon(hInstance,(LPCTSTR)ICON1);

win.hCursor=NULL;

win.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

win.lpszMenuName=NULL;

win.lpszClassName="WINCLASS1";

win.hIconSm=NULL;

HWND hwnd,h1;

RegisterClassEx(&win);

if(!(hwnd=CreateWindowEx(NULL,"WINCLASS1","Мое Окно",

//WS_OVERLAPPEDWINDOW|

WS_POPUP|WS_VISIBLE

,0,0,400,400,NULL,NULL,

hInstance,NULL))) return 0;

ShowWindow(hwnd,nCmdShow);

h1=CreateWindowEx(NULL,"button","Мое Окно", WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,

15,10,150,24,hwnd,(HMENU)100,hInstance,NULL);

DirectDrawCreateEx(NULL,(void**)&lpdd7,IID_IDirectDraw7,NULL);

// DirectDrawCreate(NULL,&lpdd,NULL);

lpdd7->SetCooperativeLevel(hwnd,DDSCL_FULLSCREEN|DDSCL_ALLOWMODEX

|DDSCL_EXCLUSIVE|DDSCL_ALLOWREBOOT );

lpdd7->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP,0,0);

memset(&ddsd,0,sizeof(ddsd));

ddsd.dwSize=sizeof(ddsd);

ddsd.dwFlags=DDSD_CAPS;

ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;

lpdd7->CreateSurface(&ddsd,&lpsprimary,NULL);

for(int color=1;color<255;color++)

{

palette.peRed=rand()%255;

palette.peGreen=rand()%255;

palette.peBlue=rand()%255;

palette.peFlags=PC_NOCOLLAPSE;

}

palette[0].peRed=0;

palette[0].peGreen=0;

palette[0].peBlue=0;

palette[0].peFlags=PC_NOCOLLAPSE;

palette[255].peRed=255;

palette[255].peGreen=255;

palette[255].peBlue=255;

palette[255].peFlags=PC_NOCOLLAPSE;

if(FAILED(lpdd7->CreatePalette(DDPCAPS_8BIT|DDPCAPS_ALLOW256

|DDPCAPS_INITIALIZE,palette,&lpddpal,NULL))){

wsprintf(szc,"%d%",45 );

MessageBox(NULL,"OK","no bonus",MB_OK); }

if(FAILED(lpsprimary->SetPalette(lpddpal))){wsprintf(szc,"%d%",45 );}

memset(&ddsd,0,sizeof(ddsd));

ddsd.dwSize=sizeof(ddsd);

if(FAILED(lpsprimary->Lock(NULL,&ddsd,DDLOCK_SURFACEMEMORYPTR|DDLOCK_WAIT

,NULL)))

{wsprintf(szc,"%d%",45 ); MessageBox(NULL,"OK","no bonus",MB_OK);}

int mempitch =ddsd.lPitch;

UCHAR* video_buffer =(UCHAR *)ddsd.lpSurface;

for(int index=0;index<1000;index++){

UCHAR color=rand()%255;

int x=rand()%SCREEN_WIDTH;

int y=rand()%SCREEN_HEIGHT;

video_buffer[x+y*mempitch]=color;

}

//wsprintf(szc,"%d%",mempitch);

// video_buffer+=mempitch;

//video_buffer[8]=happy_bitmap;

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...