Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
085953_5D0E6_lekcii_kompyuternaya_grafika_dlya_...doc
Скачиваний:
13
Добавлен:
11.11.2019
Размер:
599.04 Кб
Скачать

Сравнение стандартов OpenGl и Direct 3d

Главное концептуальное отличие OpenGL от Direct 3D это то, что OpenGL - открытый стандарт, для которого любой производитель может писать свои расширения. Direct 3D - жестко регламентированный стандарт, не допускающий никаких нововведений до появления новой версии. OpenGL - в оригинальном виде это набор функций, которые производитель должен реализовать в драйверах для типа и платы и которые разработчик может использовать в своих программах. Но ради переносимости многие функциональные возможности не введены прямо в стандарт, а выделены в расширение, и любой производитель сам может решить поддержать то или иное расширение. И даже если он не будет поддерживать ни одно расширение, кроме оригинального OpenGL, все равно будет считаться, что он полностью соответствует этому стандарту. Любой член OpenGL написал свои расширения. Есть расширения от Intel, Microsoft и тому подобное. Direct 3D имеет архитектуру, оснащенную на проверке функциональных возможностей, так называемой CAPS TEST. Direct 3D регламентирует все возможности, доступные производителям, которые могут использовать в своих 3D - ускорителях и разработкам ПО, которые используют эти возможности.

Программа (игра) запрашивает у драйвера, какие возможности предоставляет 3D - ускоритель и в зависимости от ответа включаются те или иные эффекты. При этом ни какого расширения не допускается. Microsoft лицензирует программные технологии, например, технологию наложения рельефа у компании TriTech, технологию компрессии текстур у компании S3 и другие. Direct 3D - закрытый стандарт (после публикации он не расширяется)

Прерывания

Концепция прерываний и связанная с ней концепция исключительных ситуаций составляют фундамент конструкции процессоров Intel-80x86. Это очень мощные идеи, позаимствованные от больших ЭВМ. Программно-аппаратное обеспечение, поддерживающее прерывания, дает возможность писать более качественные программы с меньшими затратами сил. Намереваясь управлять видеосистемой или другими устройствами компьютера необходимо понимать принципы работы прерываний. В частности, надо знать о многочисленных возможных конфликтных ситуациях, как их выявить и устранить. Без прерываний невозможно понять работу резидентных программ или драйверов устройств.

Прерывания - это сигналы, заставляющие центральный процессор компьютера приостановить выполнение текущей работы и перейти на выполнение программы, называемой обработчиком прерываний (Interrupt handler). Переход этот осуществляется за малое время с помощью специально разработанных аппаратных средств. Обработчик прерываний определяет причину прерывания, выполняет запланированные действия, после чего возвращает управление приостановленному процессу. Обычно прерывания вызываются событиями внешними по отношению к центральному процессору и требующему немедленных действий. К таким событиям относятся:

  • Завершение операции ввода/вывода;

  • Обнаружение аппаратного сбоя;

  • Катастрофы (отказ питания).

Для обеспечения эффективного обслуживания прерываний большинство современных процессоров поддерживают механизм типов или уровней прерывания. Любому типу обычно соответствует ячейка в памяти, называемая вектором прерывания, который определяет место положения программы обработчика прерываний данного типа. Такая система ускоряет обработку прерываний, т.к. у компьютера есть возможность непосредственной передачи управления соответствующей программе. Отпадает необходимость в центральной программе, которая определяла бы источник прерываний, затрачивая на это драгоценные машинные циклы. Концепция типов прерываний позволяет, к тому же, назначать прерыванию приоритет, чтобы в случае одновременного возникновения нескольких прерываний, наиболее важное могло быть обработано в первую очередь. Процессоры компьютеров, которые поддерживают систему прерываний, должны иметь средства для блокирования прерываний во время выполнения критических участков программы, центральный процессор может блокировать прерывания избирательно или глобально, последнее происходит чаще. Пока идёт обслуживание прерывания, центральный процессор блокирует все остальные прерывания того же или более низких уровней до тех пор, пока программа активного обработчика не завершится. В то же время, если происходит выполнение программы обработчика прерываний и возникает прерывание с более высоким приоритетом, то первая программа будет приостановлена. Семейство процессоров Intel-80x86 поддерживает 256 уровней приоритетных прерываний. Они вызываются тремя типами прерываний:

1. Внутренние аппаратные прерывания;

2. Внешние аппаратные прерывания;

3. Программные прерывания.

Внутренние аппаратные прерывания, например, попытка деления на ноль.

Внешние аппаратные прерывания инициируются контроллерами периферийного оборудования или сопроцессорами.

Когда компьютер выполняет программу, он обычно читает и выполняет одну инструкцию за другой, в том порядке как они размещены в памяти. Все команды, за исключением программных прерываний, отсылают центральный процессор к какой-то другой части той же самой программы. Программа прерывания заставляет процессор приостановить выполнение текущей программы и выполнить программу обработки прерываний (ISR).