directdraw проблема с lpitch

Тема в разделе "WASM.DirectX", создана пользователем mister_serg, 26 окт 2006.

  1. mister_serg

    mister_serg New Member

    Публикаций:
    0
    Регистрация:
    1 ноя 2005
    Сообщения:
    15
    Адрес:
    Russia
    Используя directdraw я создаю поверхность,затем используя метод lock ,получаю адрес поверхности и заоодно реальную ширину поверхности,величину LPITCH и все это прекрасно получается,когда я создаю прикрепленую поверхность функцией GetAttachedSurface.Но если пытаюсь создать заэкранную с ключом DDSCAPS_OFFSCREENPLAIN с произвольно выбраной шириной LPITCH получить не могу.Вместо него приходится вводить эмпирически найденое число,тогда все работает.Проблема в том что на разных видеокартах это число различается и мое приложение будет работать только на определеном типе видеоадаптеров.В чем может быть причина?
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Только что попробовал:
    Код (Text):
    1.       ; Создание буферной поверхности
    2.       mov [ddsd.dwSize], sizeof ddsd
    3.       mov [ddsd.dwFlags], DDSD_CAPS or DDSD_WIDTH or DDSD_HEIGHT
    4.       mov [ddsd.ddsCaps.dwCaps], DDSCAPS_OFFSCREENPLAIN
    5.       mov [ddsd.dwWidth], 1024; <- подставлял разную ширину ;)
    6.       mov [ddsd.dwHeight], 768;
    7.       COM_invoke DirectDraw, CreateSurface, [lpDD7], addr ddsd, addr lpBackSurf, NULL
    8.  
    9. дальше в WM_PAINT (оконное приложение)
    10.    mov [ddsd.dwFlags], DDSD_LPSURFACE
    11.    COM_invoke IDirectDrawSurface7, Lock, [lpBackSurf], NULL, addr ddsd, DDLOCK_WAIT, NULL
    12.    mov eax, [ddsd.lPitch]
    13.    mov [lpitch_SCR], eax         ; запомнить lPitch для вывода на экран
    14.    COM_invoke IDirectDrawSurface7, Unlock, [lpBackSurf], NULL
    Затем выводил на экран сохранённый [lpitch_SCR] - всегда соответствовал ширине ddsd.dwWidth * размер пиксела с учётом выравнивания ;) - никаких проблем не заметил
    DirectX 9.0 интерфейс 7.0
     
  3. mister_serg

    mister_serg New Member

    Публикаций:
    0
    Регистрация:
    1 ноя 2005
    Сообщения:
    15
    Адрес:
    Russia
    2 Y_Mur спасибо за помощь,пытался сохранить Lpitch некорректным способом.