МУЛЬТИПЛАТФОРМЕННАЯ РЕАЛИЗАЦИЯ КОМПЬЮТЕРНОЙ ТРЕХМЕРНОЙ ГРАФИКИ Попов Владимир, группа П-92 Цель проекта Создание набора библиотек 3D графики для работы под различные платформы (DOS16, DOS32 и Windows) Задачи Планирование архитектуры для единой работы с несколькими компиляторами (Borland C++, GNU GCC, MS Visual C++) Создание конвейера рендеринга примитивов Эмуляция подмножества функций Windows API Эмуляция подмножества интерфейса Microsoft Direct3D 8.0 Создание демонстрационной программы АРХИТЕКТУРА БИБЛИОТЕКИ 3D ГРАФИКИ Программа-приложение Подмножество интерфейса Direct3D Конвейер рендеринга Microsoft Direct3D 8.0 Низкоуровневая графическая библиотека Библиотека GrX Windows-версия (Visual C++) DOS16-версия (Borland C++) DOS-версия (GNU GCC) КОНВЕЙЕР РЕНДЕРИНГА Освещение (модель Ламберта) Матричная Трансформация y Скан-конверсия примитивов Удаление невидимых элементов Пиксели x Алгоритм z-буфера Буфер цвета z Объекты Копирование из XMM Экран монитора ДИАГРАММА НАСЛЕДОВАНИЯ КЛАССОВ Direct3DCreate8() IUnknown IDirect3D8 CreateDevice() IDirect3DDevice8 CreateVertexBuffer() Отношение управления Отношение наследования IDirect3DVertexBuffer8 АЛГОРИТМ СКАН-КОНВЕРСИИ Скан-строки Общие точки ТРУДНОСТИ И ИХ РЕШЕНИЯ ФОРМИРОВАНИЕ ЦИЛИНДРА СОЗДАНИЕ ЦВЕТОВЫХ ПАЛИТР y 0 a h Цветная (3-3-2) палитра 255 x x1 y1 z1 z 3 0 6 8 x2 y2 z2 Красный x1 = x2 = cos a y1 = h / 2 y2 = -h / 2 z1 = z2 = sin a 0 Зеленый Синий Черно-белая палитра 63 ПРИМЕР РАБОТЫ ПРОГРАММЫ ВЫВОДЫ Были созданы версии под Win32, DOS16 и DOS32 для компиляторов Borland C++ 3.1, GNU GCC и MS Visual C++ 6.0 Были эмулировано некоторое подмножество функций Windows API Было эмулировано некоторое подмножество интерфейса Microsoft Direct3D 8.0 Был создан конвейер рендеринга Была создана платформно-независимая демонстрационная программа