OpenGL - Аппаратная поддержка? Производительность? Обращение?

Тема в разделе "WASM.OpenGL", создана пользователем Arthur, 11 июл 2007.

  1. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Доброе время суток!

    Хочу зделать графическую программу работающую в Unreal Mode, без ОС,
    с использованием OpenGL. Так как в графике я вообще не соображаю есть несколько вопросов:
    1. Можно ли с помощью OpenGL работать в 2D измерении (т. е. без 3D)
    2. Если возможен 1 пункт, то насколько он эффективен по сравнению с SVGA режимом + программирование через порты и прямую адресацию в видео память?
    3. Если видео карта аппаратно поддержтвает OGL, то значать есть стандарт?
    4. Как работать с OGL, без библиотек, без ОС? Как вооще к нему обращаться?
    5. Есть доки и туторы на русском?

    Прогать естестно буду на FAsm.
     
  2. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Сначала надо будет портировать OGL на аппаратную платформу.

    1. ага
    2. гараздо
    3. http://www.opengl.org/
    4. OGL это надстройка над ОС
    5. google рулит
     
  3. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Код (Text):
    1. Сначала надо будет портировать OGL на аппаратную платформу.
    Да, но поскоку код у него работает в унрыле, он может колбасить тока в пределах 1-метра базовой памяти. Можно разреверсить виндовые дрова от Nvidia, которые весят:
    nv4_mini.sys - 1.2Mb
    nv4_disp dll - 2.6Mb
    nvoglnt.dll - 3.5Mb
    и по небольшим кускам и подгружать типа оверлеев. :) кстати там, довольно нехилая оптмизация, навроде:
    Код (Text):
    1.   shufps      xmm1,xmm2,0F8
    2.   divps       xmm3,xmm1
    3.   movaps      xmm0,xmm3
    4.   shufps      xmm3,xmm4,000
    5.   mulps       xmm5,xmm3
    6.   movaps      xmm3,xmm0
    7.   mulps       xmm0,xmm6
    :)
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Там ведь уже не OGL.

    afaik winXP : opengl32.dll -> DX -> собственно драйверы видеокарты.
    между DX и драйвером видеокарты ещё может быть что-то.
     
  5. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Ну тогда делать так. Опредилиться с минимум стандартных OpenGL функций. Патом отрасировать, и получить дампы, в виде конечных функций вплоть до операций In/Oot. :) Ну и подгружать потом как оверлеи :)
    кстати не вкурсе, XP-ишный OpenGL какой DX использует 8 или 9? :)
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    С чего бы это?
     
  7. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Тогда стандарт OGL даром не нужен.

    ddraw.dll?
     
  8. CreatorCray

    CreatorCray Member

    Публикаций:
    0
    Регистрация:
    5 авг 2006
    Сообщения:
    201
    t00x
    Для нормальных видюх и соответственно драйверов к ней: OGL->Driver->Hardware
    И никакого DX между ними.
     
  9. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    всегда думал что оpengl DX использует, какой-то драйвер виндовый всё равно использует (может и не DX). не на прямую же обращается к nv4_mini.sys например.
     
  10. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Предупреждение за нарушение Правил форума, п. 2.2.
     
  11. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    t00x
    пасибо за ответы.

    Как это зделать?

    Я все думаю что вся эта технология поддерживается последовательностью отсылки значений в специальные порты (у видахи), но вот что то я не как немогу нарулить ни на гоогл ни на яндекс про то как закодить :dntknw: Все тама описывается уже с готовой библиотекой и во сновном на сях
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Arthur
    И не найдёшь :)))
    Це тайна за семью печатями - копай dos extender с поддержкой работы ogl библитек, они конечно кривоватые и до своей оси их дорабатывать и дорабатывать, но это самое близкое по теме, что ещё гуглится ;) И поищи на форуме тема не раз всплывала и хорошие линки есть ;)
     
  13. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Arthur
    смотри #2.
     
  14. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Смотря как кто драйвера пишет. В самой видяхе нет как такового ни ОГЛ ни Д3Д. Библиотеки обращаются к драйверу, который в свою очередь "конвертирует" api вызов таким образом: - софтвер - составления контекста задания для hard -программирования регистров. Последнему вообще до балды модные названия графических библиотек

    Это автоматом заставляет на уровне IO писать 3d драйвер под каждую видяху. Даже у одной фирмы, к примеру НВ, програминг gf5xx и gf6xx отличается :)
     
  15. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    как работает драйвер понятно

    библиотека OGL обращается непосредственно к драйверу, например НВ, минуя всякие Ms библиотеки и драйверы?
     
  16. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Ага. Так как реально она часть этого драйвера. В случае с НВ это nvoglnt.dll. opengl32.dll это видимо чистый софтвер, т.к. в nvoglnt.dll продублированы все функции. Наверное если стоит драйвер, эта либа подменяется вендорской. А вообще при таком размере драйверов, как сейчас.... что через Ms библиотеки что через ж##у ...
    Где то в сети были сырцы nt4 там есть opengl32.dll

    Кстати! Берем древнющую nt4, ставим видяху gf6800gt agp (вроде последняя поддерж.) ставим дрова. Получаем примитивный dx3 и полноценный аппаратноускоряемый opengl, уровня dx9
     
  17. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    OUT и IN не используются. Там сделано через Memory Mapped I/O . Обращение идет к регистрам отоброженных в память. NVIDIA жадная 16МБ регистров, хотя реально задействованно только несколько КБ.

    Не совсем так, там идет симбиоз. И введюхах идет заточка под OGL и D3D.
    Есть стандарт OpenGL, хотя он и програмнный. Но видюшка должна поддерживать возможность выполнять тот базис который заложен стандартом.

    В последнее время радилась идея. Сделать перехват обращения. Записать состояния системы. А после про моделировать. Просто попробовать воспроизвести, то что перехвачу. А дальше разобраться как это все работает.
     
  18. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Да, про перехват. nouveau на сорсфорже - там люди активно этим занимаются. Есть кое как работаючий драйвер под линукс вроде даже с шейдерами. А у тебя гляжу искра не угасла ещё :)
    Моя история печальна - я полгода как прокаженный дизасмил, эксперементировал, в итоге получилось что-то вроде проги которая в чистом ПМ устанавливает любой режим (хоть 1280x128x32b) поддерживает аппаратный курсор, две головы, и частично хардварный вывод всяких 2д штучек. Автоматом определяла все видяхи от gf2mx до gf5950gt pci-e и их плл. На gf7 изменились регистры отвечающие за инициализацию акселератора и фреймбуфера. Ну и... психанул я. Бросил всё

    Насколько я помню работает примерно следующим образом: 1. Инициализируем акселератор, буфера, дма (то ли с 5-й то ли с 6-й режим pio убрали) и т. д. потом создаём ... как бы сказать, контекст задания что-ли...

    контекст:
    треугольник
    цвет
    координаты
    закрашенный
    без текстуры
    и т. д.

    пишем в регистры: канал дма такой-то, субканал такой-то, указывает на задание "контекст"

    смотрим, если engine свободна - вывод в такой то фреймбуфер. Непосредственно с помощью регистров в НВ ничего вывести нельзя.

    Объекто-оринтированная :) вот