С чего начать программирование графики на ассемблере?

Тема в разделе "WASM.BEGINNERS", создана пользователем assemblerist, 12 авг 2010.

  1. assemblerist

    assemblerist New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2010
    Сообщения:
    26
    Как выводить графику на экран, посредством ассемблера, напрямую работая с видеокартой? Без OpenGL, DirectX и прочих API. На время оставим проблемы совместимости в стороне.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    так же как и на си, и на любом другом языке.
    это очень сложная задача, и сомневаюсь что начиная с такого вопроса ты обладаешь достаточной квалификацией.
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Без "прочих API" (прерывание 10h и стандарт VESA тоже ведь своего рода API) вся графика ограничивается включением одного из стандартных VGA-режимов через программирование портов и последующей записью пикселей в видеопамять. Что-то там было про адреса A000:0000 и B800:0000... Исходников и даже книжек "про это" достаточно и находятся они Яндексом без особых сложностей. А всё, что выше VGA - тонет в бездне тех самых "проблем совместимости".
     
  4. assemblerist

    assemblerist New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2010
    Сообщения:
    26
    Никто и не спорит, что это сложная задача, но надо же с чего-то начинать. Вообще изучение ассемблера дело непростое.

    Что касается режима VGA, то он поддерживает разрешение экрана, если не ошибаюсь, всего лишь 640 на 480 пикселей, а это очень мало. Задача на самом деле стоит такая: создать окно предположим средствами Windows API и вывести на него чего-нибудь (хотя бы пиксель) с помощью ассемблера.
    Книг на этот счёт, на русском языке, не так уж много, пару штук от силы найти можно.
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    CyberManiac
    И, что куда хуже, отсутствии документации. Правда, АМД раскрыла кой-какие интимные подробности процессоров, лежащих в основе Radeon HD 3xxx и младше, но и всё. Причём продраться через эту документацию сможет только обладающий очччень приличными знаниями (в том числе по программированию через DirectX/OpenGL).
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    assemblerist
    А если уж окно создаётся в Винде, то без разницы, на чём писать -- всё равно выводить придётся средствами ВинАПИ. Ибо система сия не настолько дурная, чтобы всем подряд давать доступ прямо к железу.
     
  7. assemblerist

    assemblerist New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2010
    Сообщения:
    26
    И это невозможно никак обойти?
     
  8. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    Так не получится. Берёшь любую книжку по WinAPI, изучаешь. Подскажу, что самый быстрый способ рисования - через прямую запись в видеопамять - функция SetDIBitsToDevice.
    Могу тебе пример дать. На С++. На ассемблер сам переведёшь.
     
  9. assemblerist

    assemblerist New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2010
    Сообщения:
    26
    Что ж… загружай. Только я боюсь, что это не совсем, что мне нужно. Подвохи есть?
     
  10. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    assemblerist
    Из пользовательского режима, т.е. средствами обычной программы -- абсолютно никак. Ну а писать свой драйвер... Тогда надо забыть про окошки и прочие прелести ВинАПИ: драйвера режима ядра к ним доступа не имеют. Но на уровне драйвера решить эту задачу куда сложней, чем на голом железе, вообще без ОС: в последнем случае надо лишь знать, как работать с железом, а если пишешь драйвер -- то ещё и как это делать под конкретную систему и т.п.
     
  11. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Phuntik
    Эта функция не даёт прямого доступа к видеопамяти. Цитирую MSDN:

    Устанавливать пикселы в заданном прямоугольнике на устройстве она устанавливает, но делает это сама, а отнюдь не предоставляя доступ к видеопамяти программисту, т.е. ни о какой прямой работе с аппаратурой речи здесь не идёт. Ну а ещё точнее -- даже не сама, а обращаясь к куче кода системы и в конечном счёте к драйверу видюхи.
     
  12. assemblerist

    assemblerist New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2010
    Сообщения:
    26
    Писать драйвер… а смысл есть с точки зрения дальнейшей перспективы? Может такое случится, провозишься несколько месяцев непонятно с чем, а конечная цель – нормальная работа с низкоуровневой графикой – может так и не осуществиться.
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    И не осуществится. Вся нормальная работа под ОС делается через её сервисы (через ДиректХ, например). Смысл есть только тогда, когда речь идёт о программировании под голое железо, но это уже совсем другая опера.
     
  14. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    assemblerist
    больше нескольких месяцев. сперва научиться писать и отлаживать дрова, потом чтоб разобраться как долезть прямо до видюхи, а потом обидеться на комп на пару лет за то, что ничего не вышло.

    директ драв, сдл, чтото еще там про фреймбуфер. но до самого железа вам не долезть, хотябы потому, что производители видюх, особенно нвидия, давно уже не держатся никаких стандартов, пишут дровье сами и подробностей не разглашают.
     
  15. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    assemblerist
    Ты уже OpenGL освоил? Какой нибудь Shading language освоил?
     
  16. assemblerist

    assemblerist New Member

    Публикаций:
    0
    Регистрация:
    12 авг 2010
    Сообщения:
    26
    OpenGL освоил уже давно и хочу перейти на ассемблер, читай – низкоуровневую графику.
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    > но до самого железа вам не долезть, хотябы потому, что производители видюх, особенно нвидия, давно уже не держатся никаких стандартов, пишут дровье сами и подробностей не разглашают.
    ну почему же.
    вон уже лет 5-7 реверсят биосы и пишут драйвера под линух различные энтузиасты.
    > OpenGL освоил уже давно и хочу перейти на ассемблер, читай – низкоуровневую графику.
    с какой целью?
     
  18. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    n0name
    Ну а полноценная поддержка ГП? Со всеми наворотами ДХ10-11? ;)
     
  19. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    assemblerist
    Низкоуровневая графика это шейдоры. Это почти во всех книгах написано. Конечно можно спустится ниже. Но за чем вам это? Ну если так хочется то займись дизассемблированием реверсингом видео драйверов.
     
  20. lomik

    lomik New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2010
    Сообщения:
    45