Технические средства поддержки компьютерной графики
Развитие компьютерной графики во многом обусловлено развитием технических средств ее поддержки. Прежде всего это устройства вывода, каковыми являются дисплеи. В настоящее время существует несколько типов дисплеев, использующих электронно-лучевую трубку, а также дисплеи на жидкокристаллических индикаторах и другие их виды. Нас интересуют главным образом функциональные возможности дисплеев, поэтому здесь не будем касаться их внутреннего устройства и электронных схем.
Возникновение компьютерной графики, как уже говорилось ранее, можно отнести к 50-м годам. Дисплейная графика на первом этапе своего развития использовала электронно-лучевые трубки (ЭЛТ) с произвольным сканированием луча для вывода в виде изображения информации из ЭВМ. С эксперимента в Массачусетском технологическом институте начался этап развития векторных дисплеев (дисплеев с произвольным сканированием луча).
Самым простым из устройств на ЭЛТ является дисплей на запоминающей трубке с прямым копированием изображения. Запоминающая трубка обладает свойством длительного времени послесвечения: изображение остается видимым в течение длительного времени (до одного часа). При выводе изображения интенсивность электронного луча увеличивают до уровня, при котором происходит запоминание следа луча на люминофоре. Сложность изображения практически не ограничена. Стирание происходит путем подачи на всю трубку специального напряжения, при котором свечение исчезает, и эта процедура занимает приблизительно 0,5 с. Поэтому изображения, полученные на экране, нельзя стереть частично, а стало быть, динамические изображения или анимация на таком дисплее невозможны. Дисплей на запоминающей трубке является векторным, или дисплеем с произвольным сканированием, т.е. он позволяет провести отрезок из одной адресуемой точки в любую другую. Его достаточно легко программировать, но уровень интерактивности у него ниже, чем у ряда дисплеев других типов ввиду низкой скорости и плохих характеристик стирания.
Следующий тип - это векторные дисплеи с регенерацией изображения. При перемещении луча по экрану в точке, на которую попал луч, возбуждается свечение люминофора экрана. Это свечение достаточно быстро прекращается при перемещении луча в другую позицию (обычное время послесвечения - менее 0,1 с). Поэтому, для того чтобы изображение было постоянно видимым, приходится его "перерисовывать" (регенерировать изображение) 50 или 25 раз в секунду. Необходимость регенерации изображения требует сохранения его описания в специально выделенной памяти, называемой памятью регенерации. Само описание изображения называется дисплейным файлом. Понятно, что такой дисплей требует достаточно быстрого процессора для обработки дисплейного файла и управления перемещением луча по экрану.
Обычно серийные векторные дисплеи успевали 50 раз в секунду строить только около 3000–4000 отрезков. При большем числе отрезков изображение начинает мерцать, так как отрезки, построенные в начале очередного цикла, полностью гаснут к тому моменту, когда будут строиться последние.
Другим недостатком векторных дисплеев является малое число градаций по яркости (обычно от двух до четырех). Были разработаны, но не нашли широкого применения двух- и трехцветные ЭЛТ, также обеспечивавшие несколько градаций яркости.
В векторных дисплеях легко стереть любой элемент изображения - достаточно при очередном цикле построения удалить стираемый элемент из дисплейного файла.
Текстовый диалог поддерживается с помощью алфавитно-цифровой клавиатуры. Косвенный графический диалог, как и во всех остальных дисплеях, осуществляется перемещением перекрестия (курсора) по экрану с помощью тех или иных средств управления перекрестием - координатных колес, управляющего рычага (джойстика), трекбола (шаровой рукоятки), планшета и т.д. Отличительной чертой векторных дисплеев является возможность непосредственного графического диалога, заключающаяся в простом указании с помощью светового пера объектов на экране (линий, символов и т.д.).
Векторные дисплеи обычно подключаются к ЭВМ высокоскоростными каналами связи. Первые серийные векторные дисплеи за рубежом появились в конце 1960-х годов.
Прогресс в технологии микроэлектроники привел к тому, что с середины 1970-х годов преимущественное распространение получили дисплеи с растровым сканированием луча. Растровое устройство можно рассматривать как матрицу дискретных точек (пикселей), каждая из которых может быть подсвечена. Таким образом, оно является точечно- рисующим устройством. Поэтому любой изображаемый на экране дисплея отрезок строится с помощью последовательности точек, аппроксимирующих идеальную траекторию отрезка, подобно тому, как можно строить изображение по клеткам на клетчатом листке бумаги. При этом отрезок получается прямым только в случаях, когда он горизонтален, вертикален или направлен под углом 45° к горизонтали. Все другие отрезки выглядят как последовательность "ступенек" (ступенчатый эффект).
При построении изображения в растровых графических устройствах используется буфер кадра, представляющий собой большой непрерывный участок памяти компьютера. Для каждой точки в растре отводится как минимум один бит памяти. Буфер кадра сам по себе не является устройством вывода, он лишь используется для хранения рисунка. Наиболее часто в качестве устройства вывода, используемого с буфером кадра, выступает видеомонитор.
Чтобы понять принципы работы растровых дисплеев, мы рассмотрим в общих чертах устройство цветной растровой электронно-лучевой трубки. Изображение на экране получается с помощью сфокусированного электронного луча, который, попадая на экран, покрытый люминофором, дает яркое цветовое пятно. Луч в растровом дисплее может отклоняться только в строго определенные позиции на экране, образующие своеобразную мозаику. Люминофорное покрытие тоже не непрерывно, а представляет собой множество близко расположенных мельчайших точек, куда может позиционироваться луч. Дисплей, формирующий черно-белые изображения, имеет одну электронную пушку, и ее луч высвечивает однотонные цветовые пятна. В цветной ЭЛТ находятся три электронных пушки, по одной на каждый основной цвет: красный, зеленый и синий. Электронные пушки часто объединены в треугольный блок, соответствующий треугольным блокам красного, зеленого и синего люминофоров на экране. Электронные лучи от каждой из пушек, проходя через специальную теневую маску, попадают точно на пятно своего люминофора. Изменение интенсивности каждого из трех лучей позволяет получить не только три основных цвета, но и цвета, получаемые при их смешении в разных пропорциях, что дает очень большое количество цветов для каждого пикселя экрана.
Дисплеи на жидкокристаллических индикаторах работают аналогично индикаторам в электронных часах, но, конечно, изображение состоит не из нескольких крупных сегментов, а из большого числа отдельно управляемых точек. Эти дисплеи имеют наименьшие габариты и энергопотребление, поэтому широко используются в портативных компьютерах. Они имеют как преимущества, так и недостатки по сравнению с дисплеями на ЭЛТ. Хотя исторически такой способ вывода изображения появился раньше, чем растровый дисплей с ЭЛТ, но быстро развиваться он начал значительно позднее. Эти дисплеи также являются растровыми устройствами (их тоже можно представить как матрицу элементов - жидких кристаллов).
Существуют и другие виды дисплеев, например плазменная панель. Они также являются растровыми.
Помимо дисплеев, в качестве устройств вывода изображений используются плоттеры (графопостроители), предназначенные для вывода графической информации на бумагу. Ранние графические пакеты были ориентированы именно на модель перьевого плоттера, формирующего изображение с помощью пера. Перо может перемещаться вдоль двух направляющих, соответствующих двум координатным осям, причем оно может находиться в двух состояниях - поднятом и опущенном. В поднятом состоянии оно просто перемещается над поверхностью бумаги, а в опущенном оставляет на бумаге линии, формирующие изображение. Таким образом, плоттер стоит ближе к векторным дисплеям, но отличается от них тем, что стирать выводимые изображения невозможно. Поэтому для них изображение сначала полностью формируется в памяти компьютера, а затем выводится.
Следует упомянуть принтеры, выводящие изображение на бумагу или пленку. Изображение, получаемое с помощью современных принтеров, также формируется как точечное (растровое), но, как правило, с лучшим разрешением, чем экранное. Как и в случае с графопостроителем, стереть изображение или его часть невозможно.
Небольшой обзор устройств ввода информации, позволяющих решать различные задачи компьютерной графики, не вдаваясь в детали физических принципов их работы. Эти устройства позволяют организовать диалог "человек-компьютер", а особенности конструкции каждого устройства позволяют ему специализироваться на выполнении определенного круга задач. Они представляют интерес именно как логические устройства, т.е. с точки зрения выполняемых ими функций.
Первую группу устройств, с помощью которых пользователь может указать позицию на экране, назовем устройствами указания (pointing device): мышь, трекбол (trackball), световое перо (lightpen), джойстик (joystick), спейсбол (spaceball). Практически все устройства этой группы оснащены парой или несколькими кнопками, которые позволяют сформировать и передать в компьютер какие-либо сигналы или прерывания.
Рис. 1.1. Мышь Рис. 1.2. Трекбол
Мышь (рис. 1.1) и трекбол (рис. 1.2) похожи не только по назначению, но часто и по конструкции. В механической мыши и трекболе вращение шарика преобразуется с помощью пары преобразователей в сигналы, передаваемые в компьютер. Преобразователи измеряют вращение относительно двух взаимно перпендикулярных осей. Существует много модификаций устройств этих групп. В оптической мыши используются не механические, а оптические чувствительные элементы для измерения перемещения: измеряется расстояние путем подсчета штрихов на специальной подложке. Маленькие трекболы широко применяют в портативных компьютерах, где их встраивают прямо в клавиатуру (уже в прошлом).
В некоторые клавиатуры встраивают приборы, чувствительные к давлению, которые выполняют те же функции, что и мышь или трекбол, но при этом в них отсутствуют подвижные элементы. Преобразователи в таких устройствах измеряют величину давления на небольшой выпуклый набалдашник, размещенный между двумя кнопками в средней части клавиатуры. Они, как и трекбол, используются преимущественно в портативных компьютерах.
Выходные сигналы мыши или трекбола можно рассматривать как две независимые величины и преобразовывать их в координаты положения на двумерной плоскости экрана или в какой-либо другой системе координат. Считанные с устройства значения можно сразу же использовать для управления специальной отметкой (курсором) на экране.
Рис. 1.3. Световое перо
Ветераном среди устройств ввода в компьютерной графике является устройство, названное при его создании световым пером. Впервые оно появилось в проекте А.Сазерленда - Sketchpad. Световое перо содержит фоточувствительный элемент (рис. 1.3), который при приближении к экрану воспринимает излучение, порождаемое при столкновении электронов с люминофорным покрытием экрана. Если мощность светового импульса превышает определенный порог, фоточувствительный элемент формирует импульс, который передается в компьютер. Анализируя смещение по времени этого импульса относительно начала цикла регенерации, компьютер может точно определить координаты той точки экрана, возбуждение которой "высветило" фотоэлемент. Таким образом, в распоряжении пользователя оказывается устройство непосредственного указания, работающее напрямую с изображением на экране. В настоящее время это устройство уже практически вышло из употребления: оно вытеснено более простым и надежным - мышью.
Еще одно устройство, которое активно используется в мультимедийных приложениях, а также в различного рода компьютерных тренажерах - джойстик (рис. 1.4). Перемещение джойстика в двух взаимно перпендикулярных направлениях воспринимается преобразователями, интерпретируется как вектор скорости, а полученные значения используются для управления положением маркера на экране. Обработка сигнала выполняется таким образом, что неподвижный джойстик в каком- либо промежуточном положении не изменяет положения маркера, а чем дальше джойстик отклонен от начального положения, тем быстрее маркер перемещается по экрану. Таким образом, джойстик играет роль устройства ввода с переменной чувствительностью. Другое достоинство джойстика - наличие силовой обратной связи, обеспеченной наличием разного рода пружин. При этом пользователь чувствует, что чем дальше отклонен джойстик, тем большее усилие требуется для его дальнейшего движения. Это как раз те свойства, которые нужны при работе с разного рода симуляторами, а также в компьютерных играх.
Рис. 1.4. Джойстик
Рис. 1.5. Спейсбол
Спейсбол - это "трехмерное" устройство ввода. Хотя и существуют различные конструкции таких устройств, они не получили широкого распространения, поскольку проигрывают популярным двумерным устройствам по стоимости и техническим характеристикам. Спейсбол похож на джойстик, но отличается от него тем, что имеет вид закрепленного на рукоятке шара, причем рукоятка в этой конструкции неподвижна (рис. 1.5). Шар имеет датчики давления, которые измеряют усилие, прикладываемое пользователем. Шар может измерять не только составляющие усилия в трех основных направлениях (сверху вниз, от себя или на себя, влево-вправо), но и вращение относительно трех осей. Таким образом, это устройство способно передавать в компьютер шесть независимых параметров (т. е. имеет шесть степеней свободы), характеризующих как поступательное движение, так и вращение.
Существуют и другие трехмерные системы измерения и ввода, использующие самые современные технологии, например лазерные. В системах виртуальной реальности используют более сложные устройства, позволяющие динамически отслеживать положение и ориентацию пользователя. Для приложений, связанных с современной робототехникой и моделированием виртуальной реальности, иногда требуются устройства, обладающие еще большим числом степеней свободы, чем спейсбол. В последнее время появились новые разработки в этом направлении, в частности - перчатки с системой датчиков, которые способны улавливать движения отдельных частей руки человека (рис. 1.6).
Рис. 1.6. Перчатка для ввода данных
Рис. 1.7. Планшет
При использовании мыши или трекбола анализируется относительное положение устройства. Если переместить указатель на экране каким-либо способом в другое место, не вращая при этом шарик мыши или трекбола, то дальнейшие сигналы будут смещать указатель относительно новой позиции. Можно также аккуратно переместить мышь без вращения шарика и это не приведет к перемещению курсора на экране. Абсолютные координаты устройства не считываются обрабатывающей программой. Но при вводе в компьютер графиков прикладной программе зачастую требуются абсолютные координаты устройства ввода. Такую возможность обеспечивают разного рода планшеты (рис. 1.7). В планшете применяется, как правило, ортогональная сетка проводов, расположенная под его поверхностью. Положение пера определяется через электромагнитное взаимодействие сигналов, проходящих от проводов к щупу. Иногда в качестве планшета используются чувствительные к прикосновению прозрачные экраны, которые наносятся на поверхность ЭЛТ. Небольшие экраны такого типа размещаются иногда на клавиатуре портативных компьютеров. Чувствительные панели можно использовать в режимах как абсолютных, так и относительных координат.
Для растрового ввода изображений используются сканеры, позволяющие не только ввести образ в компьютер, но и произвести их обработку и документирование. Одна из важных областей применения сканеров - ввод текстов. При этом обработка введенного изображения выполняется программным обеспечением распознавания текстов, которое в настоящее время стало уже достаточно развитым. В САПР сканеры используются для автоматизации ввода ранее подготовленной конструкторской документации. В этом случае проблема заключается в том, что данные от сканера представлены в растровой, а не векторной форме, и требуется выполнение обратного преобразования "растр-вектор". Эта задача очень сложна: необходимо распознавать различные изображения и тексты, в том числе рукописные, учитывать, что линия может при сканировании не только получить различную ширину на разных участках, но и оказаться разорванной и т.д. Для решения этой задачи средств одной лишь компьютерной графики недостаточно: необходимо привлечение и других дисциплин.
Все вышеперечисленные устройства ввода с точки зрения передачи информации прикладным программам следует рассматривать как логические. Функционирование систем ввода характеризуется тем, какую информацию устройство передает в программу, когда и как оно передает эту информацию. Эти вопросы становятся особенно существенными при разработке пользовательского интерфейса.
Вопросы и упражнения
1. Назовите четыре основные области применения компьютерной графики.
2. Каковы основные направления развития компьютерной графики? Какие задачи они решают?
3. Где и когда впервые был использован дисплей в качестве устройства вывода ЭВМ?
4. Кем и когда была разработана первая интерактивная программа для рисования?
5. Назовите основных разработчиков методов закрашивания гладких поверхностей.
6. Кто является автором ряда алгоритмов построения растровых образов различных геометрических объектов?
7. Назовите авторов алгоритмов удаления невидимых линий.
8. В чем состоит основное различие между дисплеями с произвольным сканированием и растровым сканированием?
9. Чем отличается дисплей на запоминающей трубке от векторного дисплея с регенерацией изображения?
10. Каковы основные принципы работы цветной растровой электронно-лучевой трубки?
11. Как работает перьевой плоттер?
12. Назовите основные устройства ввода, использующиеся в компьютерной графике.
13. Какие из устройств ввода дают возможность работать в абсолютных координатах?
14. Перечислите области применения сканеров.
Следующая заготовка – компьютерный процесс
После компилятора выдается исполняемый файл, который может быть запущен на исполнение в конкретной ОС.
Команды в исполняемом файле - это непосредственно двоичный код команд процессора, который может быть исполнен непосредственно процессором, но в исполняемом файле есть не только команды но и служебная информация ОС, которая
описывает, например, в том числе и какие библиотеки нужны. То есть после компилятора исполняемый файл может быть исполнен в основном в той же ОС на которой он был откомпилирован (за исключением особых ситуаций кросс-компиляции или трансляции API и пр...но это уже дебри) и на том же семействе процессоров для которых он был скомпилирован.
Среда разработки это просто текстовый редактор+отладчик+интеграция этого всего с компилятором+еще куча инструментов в одном флаконе (например Eclipse или HiAsm...то, что вы видите когда редактируете исполняемую модель программы...кнопочки все эти...).
Есть CPU - вычислительная машина широкого профиля. Она может выполнять очень большое число различных видов операций. Есть GPU - вычислительная машина узкого направления. Ее предназначение - "графические вычисления". Она это делает быстрее CPU, но зато узкая специализация. Есть системы в которых GPU нет, а только CPU считает всю графику (например встраиваемые системы...сотовый телефон). Есть системы, где есть отдельный графический процессор (GPU). Но в графическую карту (на которой стоит GPU) входит еще и графическое ОЗУ (которое работает быстрее с GPU) и еще множество вещей..., но они обычно не упоминаются. В конечном итоге графическая карта для GPU это как материнская плата для CPU.
Основными инструментами разработки программного обеспечения являются:
1. Компилятор/интерпретатор.
2. Прикладные библиотеки, реализующие API (http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9
)
3. Мозг программиста.
4. Компьютер.
Разберем по порядку, назначение каждого из инструментов.
1. (http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80
)
На сегодняшний день существуют сотни языков программирования и их модификаций. Но все это разнообразие в конечно итоге сводится к компиляции или интерпретации полученного программного кода, написанного программистом или сгенерированного автоматизированной системой (а такое тоже бывает, например HiAsm). В конечном итоге программный код в большинстве случаев переводится (http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%82%D0%BE%D1%80
) в ассемблерный код, то есть компилятор (вернее его часть, называемая транслятор) переводит С++ на ассемблер, в свою очередь ассемблер представляет собой машинные инструкции, почти понятные процессору компьютера и достаточно "разжеванные" для него. Это нужно потому, что языки высокого уровня (например C++) для всех платформ и компьютеров одинаковые (за нечастыми исключениями это международный стандарт ISO, принятый для всего мира), а вот команды, которые понимает процессор, индивидуальны для каждого процессора. Ассемблер (не язык, а программный модуль компиляции языка ассемблера, находящийся в основе компилятора), превращает данные инструкции в двоичные коды, которые в свою очередь могут быть исполнены непосредственно на процессоре. Данные двоичные коды компонуются (или как это называется еще, линкуются) в готовую программу.
В результате прослеживается простая схема, тем не менее, очень сложная в реализации. Процесс состоит из четырех пунктов:
а. Написание программы на языке высокого уровня.
б. Перевод этой программы на ассемблер. Причем тут может быть не только ассемблер, но и байт-код (MSIL или JVM)...в целом