Главная » Статьи для тега "OpenGL"

OpenGL Free Pascal

Добавлено Дата: 6 July, 2014 категория: Free Pascal
Немного истории

Графический стандарт OpenGL (Open Graphics Library — открытая графическая библиотека) базируется на разработке фирмы Silicon Graphics. В 1992 г. он был принят ведущими  производителями  программного  и  аппаратного  обеспечения. В настоящее время пакет OpenGL включается в состав операционных систем наи- более распространенных средств вычислительной техники.

Читать »

Построение простейшего трехмерного изображения Free Pascal

Добавлено Дата: 3 July, 2014 категория: Free Pascal

Приведенная в листинге 16.5 программа Cube_1.pas воспроизводит на экране изображение разноцветного куба средствами библиотеки OpenGL. Массив Points задает координаты вершин куба. Каждой вершине присвоен индивидуальный цвет (массив Colors). Вдоль каждого ребра по умолчанию производится линейная ин- терполяция цветовых характеристик смежных вершин, и полученные цвета таким же образом распространяются на внутренние точки граней.

Читать »

Системы координат OpenGL Free Pascal

Добавлено Дата: 10 June, 2014 категория: Free Pascal

Процедуры OpenGL используют, как правило, пространственную систему ко- ординат, представленную на рис. 16.1. Ось z в ней направлена в сторону наблюда- теля. Вспомните об идее Z-буфера, когда точка, имеющая большую координату Z, заслоняет точку с меньшей координатой Z. Именно так решается проблема удале- ния невидимых участков при отображении пространственной сцены на плоскость экрана. Диапазон изменения любой пространственной координаты — от –1 до +1. Если реальные размеры конструируемых фигур не попадают в указанный интервал, можно воспользоваться различными способами проецирования объекта, его пере- мещением в пространстве или масштабированием.

Читать »

Управление цветом OpenGL Free Pascal

Добавлено Дата: 28 May, 2014 категория: Free Pascal

Библиотека OpenGL использует два разных подхода к окраске графических компонент. Первый, наиболее употребительный, основан на четырехкомпонентной цветовой палитре RGBA, в которой представлены интенсивности трех базовых цветов (R — красный, G — зеленый, B — синий) и уровень прозрачности (так на- зываемый альфа-канал). В большинстве графических систем, эксплуатируемых под управлением Windows, для хранения целочисленных значений этих компонентов выделяется по 8 двоичных разрядов (и это соответствует формату TrueColor — бо- гатейшей палитре с более чем 16 млн цветовых оттенков). В библиотеке OpenGL наряду с целочисленным форматом для задания интенсивностей базовых цветов широко используются вещественные значения из диапазона [0, 1]. Нулевое значе- ние соответствует минимальной интенсивности соответствующего компонента цвета, единичное — максимальной. Уровень прозрачности дает возможность рас- смотреть контуры изображений, поверх которых нарисованы новые объекты. Дос- тигается это путем смешения в определенных пропорциях старых красок со вновь накладываемыми. Нулевое значение параметра альфа соответствует абсолютной прозрачности свежего мазка, а единичное значение — абсолютной непрозрачности. Когда речь идет об отображении объекта на экране дисплея, для хранения кода цветности каждого элемента изображения (пиксела) в оперативной памяти или в видеопамяти выделяется 32 бита.

Читать »

Вместо эпилога OpenGL Free Pascal

Добавлено Дата: 26 May, 2014 категория: Free Pascal

Пакет OpenGL насчитывает порядка 250 функций. Около 150 функций пред- ставлены в библиотеках GLU и GLUT. Тот небольшой пласт, который нам удалось продемонстрировать в разделах этой главы, дал вам в руки инструмент, по мощно- сти заметно превосходящий функциональные возможности графической библиоте- ки BGI. Что осталось за границей изложенного материала?

Читать »

Графические примитивы языка OpenGL Free Pascal

Добавлено Дата: 23 May, 2014 категория: Free Pascal

Графические примитивы — это простейшие геометрические фигуры, из кото- рых конструируются более сложные плоские и пространственные объекты. В со- став языка OpenGL включены 10 примитивов, полный перечень которых приведен в табл. 16.1.

Структура любого примитива представляет собой набор точек (вершин), задан- ных своими координатами на плоскости или в пространстве и соединенных между собой тем или иным способом. Для объявления любой вершины используется опе- ратор Vertex, к имени которого добавляется два или три символа — Vertex2f, Vertex3i, Vertex4ub, … Первая цифра, добавляемая к имени оператора, указывает, сколько координат содержится в описании вершины: две (x, y), три (x, y, z) или че- тыре (x, y, z, 1). Следующие за ней одна или две буквы определяют машинный формат, в который должны быть преобразованы числовые значения координат:

Читать »

Создание 3D скетчей для сети в Processing

Добавлено Дата: 24 March, 2014 категория: Processing

В этом примере мы займемся третьим измерением. Processing.js можно использовать для отображения 3D контента, поэтому все, чему вы научились в Главе 3, Рисование в 3D - освещение и камера, можно загрузить в сеть.

Как это делается

Читать »

Трехмерное пространство в Processing

Добавлено Дата: 18 January, 2014 категория: Processing

В Главе 1, Начинаем программировать в Processing 2, мы рассказывали о системе координат в Processing. В этом примере мы рассмотрим третье измерение и наруем объекты в трехмерном пространстве.

Как это делается

Первое, что нужно сделать – импортировать библиотеку OpenGL. Это позволит вам использовать третье измерение. Вы уже делали это в примере Рисуем кривые в Главе 2, Рисуем текст, кривые и фигуры в 2D. Для импорта библиотеки с помощью кода выберите Sketch | Import Library | OpenGL:

Читать »

Концепция связывания вершин – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 5 October, 2013 категория: Программирование игр под Android

Можем ли мы еще что-то оптимизировать? Еще раз посмотрим на наш текущий метод present  (с убранными glRotatef  и gl Seal ef ):

Выглядит гораздо лучше, не правда ли? Но на самом деле метод еще не идеален. Для начала мы можем переместить вызов gl .glMatrixMode в метод resume, однако это не даст значительных улучшений. Вот что еще можно оптимизировать.

Читать »

GLSURFACEVIEW: ОБЛЕГЧАЕТ ЖИЗНЬ С 2008 ГОДА

Добавлено Дата: 4 October, 2013 категория: Программирование игр под Android

Первым делом нам понадобится определенный тип View, который позволит нам рисовать с помощью OpenGL ES. В Android API такой View имеется. Он называется GLSurfaceView и является потомком класса SurfaceView, который мы уже применяли для отрисовки мира мистера Нома.

Читать »

Фильтрация текстур – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 3 October, 2013 категория: Программирование игр под Android

Есть еще одна деталь, которую нам необходимо определить перед тем, как мы сможем использовать объект текстуры. Она связана с тем, что наш треугольник может занимать больше или меньше пикселов на экране по сравнению с тем, сколько пикселов есть в обозначенной зоне текстуры. Например, изображение Боба на рис. 7.10 имеет размер 128 х 128 пикселов. Наш треугольник занимает половину этого изображения, так что он использует 128 х 128/2 пиксела из текстуры (текстурные пикселы также называются текселы). Когда мы нарисуем на экране треугольник с координатами, которые описали в предыдущем фрагменте кода, он будет занимать 320 х 480 / 2 пикселов. На экране мы используем гораздо больше пикселов по сравнению с тем, что перенесли из зоны текстуры. Естественно, все может быть и наоборот: мы используем меньше пикселов на экране, чем на выделенной зоне текстуры. Первый случай называется магнификацией, а второй – минификацией. В каждом из них нам необходимо сообщить OpenGL ES, как нужно увеличивать или уменьшать текстуру. В терминологии OpenGL ES соответствующие механизмы называются фильтрами минификации и магнифи-кации. Эти фильтры являются свойствами объекта текстуры, как и сами данные изображения. Чтобы их установить, необходимо сначала проверить, привязан ли объект текстуры с помощью glBindTexture. Если это так, устанавливаем их следующим образом:

Читать »

МАМА, СМОТРИ: Я НАРИСОВАЛ КРАСНЫЙ ТРЕУГОЛЬНИК.

Добавлено Дата: 2 October, 2013 категория: Программирование игр под Android

Итак, в OpenGL ES Нужно кое-что настроить перед тем, как переходить к отрисовке геометрических фигур. Два наиболее важных элемента – это проекционная матрица (плюс конус отображения) и область просмотра, которая определяет размер конечно о изображения и его положение при визуализации в фреймбуфере.

Читать »

2D-ПРЕОБРАЗОВАНИЯ: МАТРИЦА МОДЕЛЬ – ПРЕДСТАВЛЕНИЕ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 18 September, 2013 категория: Программирование игр под Android

 

До этого мы описывали статическую геометрию в виде списка треугольников. Здесь не было ни передвижения, ни поворотов, ни изменения масштаба. Однако даже когда сами параметры вершины оставались прежними (например, не изменялись ширина и высота прямоугольника, состоящего из двух треугольников вместе с координатами текстуры и цвета), нам по-прежнему приходилось создавать копию вершин, если мы хотели нарисовать такой же прямоугольник в другом месте. Посмотрите снова на листинг 7.11 и пока не учитывайте цветовые атрибуты вершин. Два прямоугольника различаются только значением у-координаты – на 200 единиц. Если бы мы могли передвигать эти вершины без фактического изменения их значений, мы могли бы описать прямоугольник Боба только один раз и просто отрисовывать его в разных местах. И это как раз то, для чего мы будем использовать матрицу Модель – представление.

Читать »

ВОЗМОЖНОСТИ И АРХИТЕКТУРА ANDROID

Добавлено Дата: 12 September, 2013 категория: Программирование игр под Android

 

Android – это не просто еще один дистрибутив Linux для мобильных устройств. При разработке для Android вам, скорее всего, не придется иметь дело с сами ядром Linux. С точки зрения программиста, Android – платформа, абстрагирующая разработчика от ядра и позволяющая ему создавать код на Java. Android обладает несколькими полезными возможностями. Во-первых, это фреймворк, предлагающий большой набор API для создания различных типов приложений и, кроме того, обеспечивающий возможности повторного использования и замены компонентов, которые предлагаются платформой и сторонними приложениями. Во-вторых, наличие виртуальной машины Dalvik, отвечающей за запуск приложений на Android. Кроме того, к услугам разработчика набор графических библиотек для 2D- и 3D-приложений, поддержка мультимедиа-форматов (Ogg Vorbis, МРЗ, MPEG-4, Н.264, PNG), API для доступа к камере, GPS, компасу, акселерометру, сенсорному экрану, джойстику и клавиатуре. Имеется даже специальное API для воспроизведения фоновых звуковых эффектов, которое пригодится нам при разработке игр. Не все Android-устройства обладают всеми этими возможностями – налицо аппаратное разделение. Конечно, список возможностей Android не исчерпывается упомянутыми мной. Однако для разработки игр они будут наиболее важны.

Читать »

Уменьшаем количество вызовов методов OpenGL ES/JNI – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

Добавлено Дата: 10 September, 2013 категория: Программирование игр под Android

Прежде всего это могло произойти из-за большого количества вызовов OpenGL ES на кадр, когда мы визуализируем модель для каждого из Бобов. У нас происходит четыре матричные операции с каждым экземпляром Боба. Если нам не нужно поворачивание или изменение размеров, можем сократить количество вызовов до двух. Вот количество кадров в секунду, когда мы используем только gl Loadldenti ty  и gl Trans 1 atef  во внутреннем цикле:

Читать »