DDraw, странно как-то...

Тема в разделе "WASM.DirectX", создана пользователем Ole, 22 янв 2005.

  1. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Привет всем. Кто нибудь сталкивался с такой ерундой: к примеру ставим видеорежим 1152*864*32, создаем буфер (экранный, задний или оба - неважно). Ерунда в том, что ddraw для этого видеорежима делает буфер 1280*864*32! Делаем видеорежим 1024*768*32 - буфер нормальный, 1280*960*32 - нормальный....
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Это есть где-то в SDK - выбирается любой удобный формат, ширина может быть и больше - связано со структурой видеопамяти. поэтому и существует lPitch в труктуре DDSURFACEDESC(2).



    часто "ширина" кратна килобайту: 1152*4 не делится нацело на 1024, поэтому dx и "округляет" до 1280.

    если буфер в системной памяти, то ширина обычно равна той, что при создании.



    Или я не о том, и 1280 - это ширина возвращаемая IDirectDrawSurface::GetSurfaceDesc в dwWidth ?

    (у меня не держит 1152*864*32 - проверить не могу :dntknw:)
     
  3. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Спасибо S_T_A_S_, поищу в SDK, а то не знал что и думать.
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
  5. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Нет S_T_A_S_, просто визуально. Сделал линию 1153 пиксела - на следующей строке ничего не появилось. Сделал - 1281 пиксела, и один пиксел появился на следующей строке. Но режим был точно 1152*864, ты не думай.
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Ну я это и имел ввиду: определить эмпирическим методом адрес пикселя ниже, и поделить на кол-во строк (т.е. 1) :)

    я сам когда-то об это споткнулся, когда пытался очищать экран обнуляя X*Y пикселей.
     
  7. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Вот-вот. Теперь я. :)