Доброе время суток! Хочу зделать графическую программу работающую в Unreal Mode, без ОС, с использованием OpenGL. Так как в графике я вообще не соображаю есть несколько вопросов: 1. Можно ли с помощью OpenGL работать в 2D измерении (т. е. без 3D) 2. Если возможен 1 пункт, то насколько он эффективен по сравнению с SVGA режимом + программирование через порты и прямую адресацию в видео память? 3. Если видео карта аппаратно поддержтвает OGL, то значать есть стандарт? 4. Как работать с OGL, без библиотек, без ОС? Как вооще к нему обращаться? 5. Есть доки и туторы на русском? Прогать естестно буду на FAsm.
Сначала надо будет портировать OGL на аппаратную платформу. 1. ага 2. гараздо 3. http://www.opengl.org/ 4. OGL это надстройка над ОС 5. google рулит
Код (Text): Сначала надо будет портировать OGL на аппаратную платформу. Да, но поскоку код у него работает в унрыле, он может колбасить тока в пределах 1-метра базовой памяти. Можно разреверсить виндовые дрова от Nvidia, которые весят: nv4_mini.sys - 1.2Mb nv4_disp dll - 2.6Mb nvoglnt.dll - 3.5Mb и по небольшим кускам и подгружать типа оверлеев. кстати там, довольно нехилая оптмизация, навроде: Код (Text): shufps xmm1,xmm2,0F8 divps xmm3,xmm1 movaps xmm0,xmm3 shufps xmm3,xmm4,000 mulps xmm5,xmm3 movaps xmm3,xmm0 mulps xmm0,xmm6
Там ведь уже не OGL. afaik winXP : opengl32.dll -> DX -> собственно драйверы видеокарты. между DX и драйвером видеокарты ещё может быть что-то.
Ну тогда делать так. Опредилиться с минимум стандартных OpenGL функций. Патом отрасировать, и получить дампы, в виде конечных функций вплоть до операций In/Oot. Ну и подгружать потом как оверлеи кстати не вкурсе, XP-ишный OpenGL какой DX использует 8 или 9?
t00x Для нормальных видюх и соответственно драйверов к ней: OGL->Driver->Hardware И никакого DX между ними.
всегда думал что оpengl DX использует, какой-то драйвер виндовый всё равно использует (может и не DX). не на прямую же обращается к nv4_mini.sys например.
t00x пасибо за ответы. Как это зделать? Я все думаю что вся эта технология поддерживается последовательностью отсылки значений в специальные порты (у видахи), но вот что то я не как немогу нарулить ни на гоогл ни на яндекс про то как закодить Все тама описывается уже с готовой библиотекой и во сновном на сях
Arthur И не найдёшь )) Це тайна за семью печатями - копай dos extender с поддержкой работы ogl библитек, они конечно кривоватые и до своей оси их дорабатывать и дорабатывать, но это самое близкое по теме, что ещё гуглится И поищи на форуме тема не раз всплывала и хорошие линки есть
Смотря как кто драйвера пишет. В самой видяхе нет как такового ни ОГЛ ни Д3Д. Библиотеки обращаются к драйверу, который в свою очередь "конвертирует" api вызов таким образом: - софтвер - составления контекста задания для hard -программирования регистров. Последнему вообще до балды модные названия графических библиотек Это автоматом заставляет на уровне IO писать 3d драйвер под каждую видяху. Даже у одной фирмы, к примеру НВ, програминг gf5xx и gf6xx отличается
как работает драйвер понятно библиотека OGL обращается непосредственно к драйверу, например НВ, минуя всякие Ms библиотеки и драйверы?
Ага. Так как реально она часть этого драйвера. В случае с НВ это nvoglnt.dll. opengl32.dll это видимо чистый софтвер, т.к. в nvoglnt.dll продублированы все функции. Наверное если стоит драйвер, эта либа подменяется вендорской. А вообще при таком размере драйверов, как сейчас.... что через Ms библиотеки что через ж##у ... Где то в сети были сырцы nt4 там есть opengl32.dll Кстати! Берем древнющую nt4, ставим видяху gf6800gt agp (вроде последняя поддерж.) ставим дрова. Получаем примитивный dx3 и полноценный аппаратноускоряемый opengl, уровня dx9
OUT и IN не используются. Там сделано через Memory Mapped I/O . Обращение идет к регистрам отоброженных в память. NVIDIA жадная 16МБ регистров, хотя реально задействованно только несколько КБ. Не совсем так, там идет симбиоз. И введюхах идет заточка под OGL и D3D. Есть стандарт OpenGL, хотя он и програмнный. Но видюшка должна поддерживать возможность выполнять тот базис который заложен стандартом. В последнее время радилась идея. Сделать перехват обращения. Записать состояния системы. А после про моделировать. Просто попробовать воспроизвести, то что перехвачу. А дальше разобраться как это все работает.
Да, про перехват. nouveau на сорсфорже - там люди активно этим занимаются. Есть кое как работаючий драйвер под линукс вроде даже с шейдерами. А у тебя гляжу искра не угасла ещё Моя история печальна - я полгода как прокаженный дизасмил, эксперементировал, в итоге получилось что-то вроде проги которая в чистом ПМ устанавливает любой режим (хоть 1280x128x32b) поддерживает аппаратный курсор, две головы, и частично хардварный вывод всяких 2д штучек. Автоматом определяла все видяхи от gf2mx до gf5950gt pci-e и их плл. На gf7 изменились регистры отвечающие за инициализацию акселератора и фреймбуфера. Ну и... психанул я. Бросил всё Насколько я помню работает примерно следующим образом: 1. Инициализируем акселератор, буфера, дма (то ли с 5-й то ли с 6-й режим pio убрали) и т. д. потом создаём ... как бы сказать, контекст задания что-ли... контекст: треугольник цвет координаты закрашенный без текстуры и т. д. пишем в регистры: канал дма такой-то, субканал такой-то, указывает на задание "контекст" смотрим, если engine свободна - вывод в такой то фреймбуфер. Непосредственно с помощью регистров в НВ ничего вывести нельзя. Объекто-оринтированная вот