Охотно объясню. Хотелось бы в своей ОС получить полноценное 3D, обеспечиваемое самой видеокартой, т.е. GPU, именно без участия CPU. Просто еще нигде в "самописных" ОС еще такого не встречал. Обычно VESA и все. Да, с ней работать достаточно просто и примеров море, но... Во-первых, не так быстро, как хотелось бы. Во-вторых, 60 Гц на ЭЛТ мониторе - это зло. Причем на высоких разрешениях - зло в квадрате. Я понимаю, что редко у кого сейчас ЭЛТ, но вот у меня оно и есть. Так что мучать свои глаза мне жалко. В-третьих, как я уже успел узнать - современные карты не всегда VESA 3.0 поддерживают. В-четвертых, почему бы не воспользоваться тем, что в "железе" уже есть? В-пятых, CPU и так есть чем заняться , кроме отрисовки окон. В-шестых, таки может тогда на нее кроме меня кто-нибудь взглянет (я великий убийца майкрософт ).
А нету там 3D. Там есть только "кирпичики" для построения 3D. Поэтому без создания аналога OpenGL или DirectX никак. Один человек уже давно не в состоянии "убить МС" и даже группа программеров
Просто хотелось бы поиметь 3D "из GPU" в своей ОС. Пусть даже для этого прийдется написать свой аналог OpenGL. А то что там низкоуровневый API, так это ж для ассемблерщика хлеб насущный. И пугать его низким уровнем - это как ежа голой попой пугать.
да не нужно там никакого OpenGL просто вы должны сами понять что такое 3D потому что все требования которые вы описали для 3D не нужны вообщем то для начала поищите архитектуру NVIDIA GPU где все рассписано как это в принципе работает а то мне все это видиться как "хочу сделать космолет на основе велосипедов - расскажите сколько надо велосипедов и как их сложить что бы получился космолет" ))
Вот как раз где найти документацию по арихитектуре и спецификации необходимые я и спрашивал. Если не трудно - подскажите ссылочкой, пожалуйста. А по поводу того что это не нужно - позволю себе не согласиться. Каждая железка должна заниматься своим делом, это мое имхо. Соответственно рисовать картинку должна видеокарта. Причем рисовать по полной, так сказать, раз уж она это может.
BlackCat И все-таки я не пойму что конкретно нужно. Если настоящее 3Д - то спецификации карты надо читать в последнюю очередь, сначала надо просветится по технологии 3Д - проецирование, удаление невидимых линий и т.д. А если тебе "финтифлюшки", типа Аэро, то это не 3Д. А про ежа : ты ведь писал про "убийство". И у тебя два пути : использовать в той или иной мере готовые библиотеки, а это не есть "низкий уровень", либо твой еж обречен. Изначально(ну когда про ускорители графики заговорили) внутренности видео-карт проектировались под мощных разработчиков и постепенно часть переносилась из библиотек внутрь карты. Да там много всего напихано, но не для разработки с нуля. А впрочем дерзай!
Таки да - хочется полноценное и полнофункциональное 3D на асме в виде опен-сорс кода для всех желающих. Идея благородная, но тяжело реализуемая. Именно поэтому сейчас покурю доки, подумаю хорошенько, хватит ли меня на реализацию хотя бы половины заявленного. Тогда уже буду думать дальше и регистрироваться на sourceforge или google-code. По поводу ежа я говорил к тому, что не боюсь читать заумные доки, в которых расписан самый низкий уровень работы видеокарты. Асм учит работать напрямую с устройствами и так, как того сам желаешь. Я прекрасно понимаю, что моих знаний, сил и стараний может вполне себе не хватить на реализацию задуманного. Но идея-то хороша, а? К тому же я верю, что грамотный код на асме работает быстрее. Поэтому на современном железе можно получить сногсшибательную производительность в приложениях. К сожалению, чтобы впечатлить потенциальных клиентов нужно что-то показать, желательно "красявое все из себя". Поэтому нужно ковырять видеокарту. В любом случае нужно. И не только мне. Думаю многим будет по душе свободный код, который позволяет использовать честное 3D в своих собственных разработках. P.S. Чем чёрт не шутит - может кто портирует в виде библиотеки на другие ОСи. P.P.S. Еще раз повторюсь - я прекрасно понимаю, что проект такой сложности не поднять одному. И прекрасно понимаю, что моих знаний и сил скорее всего не хватит на полную реализацию всего задуманного. Но не пытаться я не могу. Просто не могу. И не потому, что мне не дают покоя лавры MS. Просто мне интересно. И обидно, что в той же Win7 ничего нового относительно WinXP по сути дела и не появилось-то. Кроме глюков и тормозов. А железо должно работать. Быстро работать, а не тратить время на кривой код или лень современных программистов.
Архитектура видео карт хорошо расписана на ixbt. Правда чем это поможет не знаю. Странная фраза! Вывод 3D графики представим в виде конвейера. Не помню сколько точно стадий где-то около 5. Которые легко написать самому. Это раньше шла заточка под каждую финтефлю заводили блок в видео карте. А с появлением шейдоров стали делать унифицированные блоки, а весь аппарат снова возложили на плечи программиста, а вернее на библиотеке только выполняются они на GPU. Правда часть специализированных блоков осталось. И все время что-то меняют. Только программная реализация 3D вывода дает низкоуровневый доступ к 3D. А так придется делать абстракцию и получите вы DirectX где куча программистов села и написала куча эффектов и математике. Пока идеи я не увидел. Напиши план тогда ясно будет что ты хочешь.
Т.е. написанное под PM 32-bit. По возможности максимально нативно. С удобным API (это для тех, кому лень ковыряться в исходниках). Т.е. захотелось человеку свою ОС накропать - он берёт готовый код, может немного переделывает "под себя" и спокойно и радостно использует честное 3D. P.S. Хорошая мысль! Ведь теперь действительно видеокарта - это набор стандартных блоков, объединенных в конвейер. Блин, торможу, видимо перегруз новыми знаниями. Надо перерыв сделать на недельку.
Отвечая на сообщение #1, отвечаю: я устанавливаю необходимое разрешение (в моем случае 1024x768x32) до перехода в защищенный режим. А потом в защищенном просто эксплуатирую LFB: mov [fs:edi],eax fs - сегмент с базой=0 и лимитом=4Гб. edi - адрес LFB + смещение точки на экране; eax - цвет точки.
Во-первых, очень много софта обходится вообще без шейдеров до сих пор, во-вторых, этих шейдеров аж 3 версии. Одному такое точно не поднять. Я еще понимаю под какую-то конкретную Ось, а универсальную библиотеку. А главное на фиг она кому сдалась : основная проблема самописных осей не в 3Д-графику упирается. Вот там и надо писать универсальные библиотеки : загрузка, работа в PM, просто графика(!) и т.д. Рюшечки пока не на что навешивать Надо строить аппарат для быстрого построения осей, а не для их раскраски.
Я вот накодил по интеловским мануалам и исходникам дров переключение режима на 1024x600 + put_pixel для GMA950( = 945GM ) Есть некоторые проблемы, но в общем работает - уже вывел красную линию. Очень доволен =/