Графика в Delphi - примеры задач на построение графиков, а также компоненты для графики

Экспорт анимированных 3D персонажей из 3D STUDIO MAX 3.0 для DELPHI и OpenGL

Берегись дьявольской дыры в киберпро..в;.??/”:?;/…………..

Введение

В свое время я здорово помучался, решая вопрос - каким же образом создатели игр ухитряются делать трехмерные персонажи двигающиеся в реальном времени. Я предположил, что части тела у персонажей отделены от основного тела, что позволяет независимо поворачивать и перемещать их. Знаете, в Direct3D даже есть понятие фрейма, фрейм - это основное тело, к нему прикрепляются другие тела. Когда фрейм движется, прикрепленные к нему объекты движутся вместе с ним, кроме того, прикрепленные объекты могут двигаться и самостоятельно не влияя на движение фрейма. Все это замечательно подходит для создания механических объектов и персонажей, но совершенно не годится для создания объектов живого мира. Для таких объектов характерна плавность линий и отсутствие изломов на местах стыков частей объекта. Создатели компьютерных игр замечательно решили эту проблему.

Как создается двумерная анимация? Рисуется несколько кадров движения, затем поледовательно выводятся на экран и таким образом создается иллюзия движения. То же самое происходит в современных трехмерных компьютерных играх. Создается несколько 3D моделей (сеток), характеризующих фазы движения персонажа в различные моменты времени, затем поледовательно выводятся на экран, создавая иллюзию движения. Возможно, это приводит к повышенному расходу оперативной памяти, поскольку все сетки желательно хранить в памяти, но зато значительно упрощается процесс программирования и, скорее всего, увеличивается скорость работы приложения.
Read more »

Получение OpenGL расширений

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение OpenGL расширений

Зависимости: OpenGL
Автор: Gua, gua@ukr.net, ICQ:141585495, Simferopol
Copyright: Gua
Дата: 18 июля 2002 г.
***************************************************** }

function GetOGLExtensions: string;
var
DC: HDC;
hrc: HGLRC;
{Установка формата пикселей}
procedure SetDCPixelFormat;
var
DC: HDC;
nPixelFormat: Integer;
pfd: TPixelFormatDescriptor;
begin
FillChar(pfd, SizeOf(pfd), 0);
nPixelFormat := ChoosePixelFormat(DC, @pfd);
SetPixelFormat(DC, nPixelFormat, @pfd);
end;

begin
DC := GetDC(0);
SetDCPixelFormat;
hrc := wglCreateContext(DC);
wglMakeCurrent(DC, hrc);

Result := StrPas(PChar(glGetString(GL_EXTENSIONS)));

wglMakeCurrent(0, 0);
wglDeleteContext(hrc);
ReleaseDC(0, DC);
DeleteDC(DC);
end;

Пример использования:

MessageDlg(GetOGLExtensions,mtInformation,[mbOK],0);

Прыгающая точка

Райский сад. Всюду деревья с сочными плодами. Знаменитости прогуливаются. Ангелы всюду порхают. Музыка нежная. В общем, рай. Поднимается лифт, оттуда выползает окровавленный DOOM’ер с BFG в руках, оглядывается вокруг и орет: “ХA-A-A-A-A!!!! BONUS LEVEL!!!!!!!!”

Прежде всего, определим сначала, какие навыки нам нужны, многие из вас изучали или изучаете язык программирования Pascal, именно с его помощью мы попробуем написать несколько программ. Сейчас почти все игры разрабатываются для Windows, так что нам придётся работать со средой Delphi. Программы в среде Delphi (Delphi не язык программирования) пишутся на языке Object Pascal, специальном диалекте Паскаля. От языка Pascal этот диалект отличается тем, что он имеет большое количество дополнительных возможностей. Также вам следует уметь работать хотя бы с одним графическим редактором, хотя бы с Paint. В следующих статьях мы рассмотрим ряд других возможностей, например, как создать движущийся объект с помощью программы AutoCAD или как создать множество визуальных эффектов: тень, отражение. В данной статье мы рассмотрим несколько самых аспектов: как с помощью точек нарисовать простой движущийся объект, как управлять объектами с помощью клавиатуры.
Read more »

Основы программирования OpenGL в Borland СBuilder и Delphi - Самое начало

На кого рассчитана статья

Я рассчитываю на то, что вы знакомы с азами создания приложений в С++Builder или Delphi и совсем не знаете OpenGL.

Введение

OpenGL (Open Graphics Library) – популярная библиотека для работы с 3D графикой. Стандарт OpenGL появился в 1992 году благодаря компании Silicon Graphics и сейчас переживает годы своего самого бурного развития.

Чуть-чуть побольше узнать об OpenGL и о том, как с ним работать в VC, можно, почитав wat’а: http://www.gamedev.ru/coding/11203.shtml

Я хочу показать, как работать с этой библиотекой в таких популярных и, на мой взгляд, очень удобных средах разработки, как Delphi и С++Builder.
Read more »

Основы программирования OpenGL в Borland СBuilder и Delphi - Простейшие объекты

Часть 1. Координаты и всё, что с ними связано

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

Рассматривая какой-либо трёхмерный объект, мы всегда определяем его положение и размеры относительно некоторой привычной, и удобной в настоящий момент системы координат, связанной с реальным миром. Такая исходная система координат в компьютерной графике является правосторонней и называется мировой системой координат. Для того, чтобы можно было изобразить объект на экране, его необходимо предварительно перевести (или преобразовать) в другую систему координат, которая связана с точкой наблюдения и носит название видовой системы координат. Эта система координат является левосторонней. И, наконец, любое трёхмерное изображение мы всегда рисуем на двумерном экране, который имеет свою экранную систему координат. (Этот абзац я списал у Ю.Тихомирова).
Read more »

Записать содержимое окна OpenGL в BMP файл

Сидят два программера в офисе. Бац - звонок телефонный, на проводе шеф:
- Hу, ребята, чем занимаетесь?
- Козла забиваем!
- В домино играете ?!
- Да неееее - в DOOM!

gr - объект, в канве которого я рисую с помощью OpenGL

bt := TBitmap.Create;
with bt do
begin
Width := gr.Width;
Height := gr.Height;
Canvas.CopyRect(ClientRect, gr.Canvas, gr.ClientRect);
SaveToFile(’e:\bt.bmp’);
Free;
end;
Read more »

Работа с OpenGL - Введение

Лежат два програмиста на берегу моря один дрегому:
- Смотри какие облака.
- Да это они умеют!

Введение

По мере знакомства с использованием OpenGL в Delphi у меня появился ряд проектов, иллюстрирующих различные аспекты этого вопроса. Проекты начинаются с самых минимальных программ, в которых просто окрашивается окно или выводится прямоугольник с использованием функций OpenGL и заканчиваются масштабными проектами из тысяч строк кода. Эти работы позволяют проследить мой путь и могут служить подмогой для тех, кто только начинает разбираться в этих вопросах.

Когда я начинал изучение этого, у меня не было ни одного примера использования OpenGL в Delphi, только ворох программ на C и C++, поэтому пришлось начинать с того, чтобы перекладывать эти программы на Delphi. Затем появились и полностью собственные проекты. Моя основная работа связана с преподаванием в вузе, после того, как я включил в учебные курсы изучение основ OpenGL, студенты с моей помощью смогли создать ряд интересных проектов.

Я решил опубликовать некоторые из проектов моей коллекции, озаглавил набор “ЖиЛистая Delphi” и предложил сайту “Королевство Delphi”. На сайте мне предложили дополнить эти проекты серией статей по вопросам использования OpenGL в Delphi. Данная статья является первой статьей этого цикла.

Статьи я предполагаю писать на уровне, доступном для самой широкой аудитории - от новичков в программировании для Windows до умудренных профессионалов. Я постараюсь придерживаться краткости в своих рассуждениях, освещая только суть рассматриваемых вопросов. Многие вопросы, освещаемые здесь, ясно проиллюстрированы в проектах “ЖиЛистой Delphi”.
Read more »

OpenGL - радиальное размытие

Пасьянс косынка - сильнодействующий психотропный препарат для нейролингвистического зомбирования разработанный в секретной лаборатории КГБ ¦7708. Вызывает 100%-ное привыкание с первой дозы. Позволяет контролировать сознание косынкоманов, подавляет желание работать, вызывает состояние апатии и расслабленности. Побочные эффекты: редкие уколы совести (надо поработать), но проходит по мере увеличения дозы препарата.

// К заголовку RadialBlur(For OpenGL)
// Данный код работает правильно только, если в пректе 0 форм ,
// а сам код введен в DPR файл!

program RadialBlur;

uses
Windows,
Messages,
OpenGL;

const
WND_TITLE = ‘Radial Blur’;
FPS_TIMER = 1; // Timer to calculate FPS
FPS_INTERVAL = 1000; // Calculate FPS every 1000 ms

type
TVector = array[0..2] of glFloat;
var
h_Wnd: HWND; // Global window handle
h_DC: HDC; // Global device context
h_RC: HGLRC; // OpenGL rendering context
keys: array[0..255] of Boolean; // Holds keystrokes
FPSCount: Integer = 0; // Counter for FPS
ElapsedTime: Integer; // Elapsed time between frames
Read more »

Каким обpазом выбиpать pазмеp шpифта

Каким обpазом выбиpать pазмеp шpифта, т.к. все мои стpадания по выбоpyпаpаметpов шpифта в CreateFont() никак не отpажались на его pазмеpе. Все что я пpидyмал, это юзать glScale(), но в этом слyчае полyчаем плохое качество (по сpавнению с той-же Воpдой) пpи малом pазмеpе символов

Вот часть работающего примера на Си (переведенного мною на Паскаль (АА)).

procedure GLSetupRC(pData: Pointer)
//void GLSetupRC(void *pData)
//{
var
// HDC hDC;

hDC: HDC;
// HFONT hFont;

hFont: HFONT;
// GLYPHMETRICSFLOAT agmf[128];
agmf: array[0..127] of GLYPHMETRICSFLOAT;
// LOGFONT logfont;
Read more »

Работа с OpenGL - Минимальная программа

Идет кинофильм, какой то душераздирающий триллер. Главная героиня в ажурном нижнем белье медленно продвигается по темному коридору. Музыка нагнетает обстановку. Главная героиня подходит к двери, протягивает руку, что бы открыть ее … И тут истошный крик из зала:
- Сохраняйся, дура!!! Сохраняйся!!!

Содержимое контекста

Итак, если необходимо осуществить вывод на поверхность чужого окна, надо, получив ссылку на это окно, получить ссылку на контекст устройства, связанную с этим окном, после чего можно рисовать на чужом окне. Когда мы работаем с OpenGL, мы создаем контекст воспроизведения OpenGL, связанный с контекстом устройства нашего окна, далее обращаемся к функциям OpenGL, отрабатывая которые, OpenGL строит картинку на поверхности нашего устройства.

То есть схема здесь такая - приложение отдает команды машине OpenGL, получая результат на поверхности своего окна. Такая архитектура называется “клиент - серверной”, в роли клиента выступает наше приложение, в роли сервера - система OpenGL. Задача сервера - отрабатывать команды клиента. В принципе, сервер может располагаться и не на нашем компьютере, а удаленно, возможно и за тысячи километров от нас. Наше приложение должно передать серверу требуемые для работы данные - контексты и команды на языке сервера. Также важно понимать, что основную работу выполняет не наше приложение, а сервер. Наше приложение лишь создает окно - платформу для работы сервера, и передает команды серверу. При грамотном подходе нет разницы, какими средствами мы спроектировали приложение - С или Delphi, скорость воспроизведения целиком зависит от производительности сервера - машины OpenGL. Мы выбрали в качестве средства разработки приложений именно Delphi за выдающуюся скорость компиляции и обаятельность концепций.
Read more »

Powered WP Ъ скачать delphi, delphi 7, скачать delphi 7, delphi файлы, delphi, компоненты, delphi 2009, delphi программы, delphi бесплатно, delphi скачать, бесплатно работа delphi, delphi создание, delphi строки, программирования delphi, borland delphi, delphi формы