Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Прежде всего, определим сначала, какие навыки нам нужны, многие из вас изучали или изучаете язык программирования Pascal, именно с его помощью мы попробуем написать несколько программ.
Сейчас почти все игры разрабатываются для Windows, так что нам придётся работать со средой Delphi. Программы в среде Delphi (Delphi не язык программирования) пишутся на языке Object Pascal, специальном диалекте Паскаля. От языка Pascal этот диалект отличается тем, что он имеет большое количество дополнительных возможностей. Также вам следует уметь работать хотя бы с одним графическим редактором, хотя бы с Paint. В следующих статьях мы рассмотрим ряд других возможностей, например, как создать движущийся объект с помощью программы AutoCAD или как создать множество визуальных эффектов: тень, отражение. В данной статье мы рассмотрим несколько самых аспектов: как с помощью точек нарисовать простой движущийся объект, как управлять объектами с помощью клавиатуры.Сейчас графика для Windows программируется одним из двух средств: DirectX или OpenGL. Работать с DirectX пришлось бы с помощью языка C++, который является слишком громоздким для начинающего программиста, так что лучше использовать второе.
Если вы еще не работали с Delphi, рекомендую прочитать любую книгу на эту тему.
Сейчас нам предстоит сделать самый первый шаг, сделав который, вы сможете с уверенностью двигаться дальше. Для начала убедитесь, что вы установили Delphi пятую или четвертую версию этого пакета. Если у вас не установлен данный пакет, сделайте это как можно быстрее, так как без Delphi вы не сможете написать ни одной программы из книги.
Для начала мы рассмотрим очень простой пример графической программы. Она представляет собой квадрат, появляющийся в различных точках экрана. Причем, координаты будут определяться случайно.
Теперь перейдем непосредственно к программе.
procedure TfrmGL.Timer1Timer(Sender: TObject); procedure SetDCPixelFormat (hc : HDC); var pFormat : TPixelFormatDescriptor; Npixel : Integer; begin FillChar (pFormat, SizeOf (pFormat), 0); pFormat.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; NPixel := ChoosePixelFormat (hc, @pFormat); SetPixelFormat (hc, NPixel, @pFormat); end; var hc: HGLRC; x, y: real; begin SetDCPixelFormat(Canvas.Handle); hc := wglCreateContext(Canvas.Handle); wglMakeCurrent(Canvas.Handle, hc); glViewPort (0, 0, ClientWidth, ClientHeight); glClearColor (0.1, 0.4, 0.65, 1.0); glClear (GL_COLOR_BUFFER_BIT); glPointSize (5); glColor3f (1.0, 0.4, 0.5); y:=random; y:=round(y*100); y:=y/100; x:=random; x:=round(x*100); x:=x/100; glVertex2f (x, y); glEnd; SwapBuffers(Canvas.Handle); wglMakeCurrent(0, 0); end;
Первый и второй аргумент команды glViewPort означает, что середина системы координат будет располагаться по середине экрана, остальные два параметра, будут указывать какую площадь экрана будет выделена под область рисования. В нашем случае мы заняли весь экран.
Полноэкранный режим
Все, или почти все современные игры полностью используют площадь экрана, так что верхняя панель экрана и нижнее меню Windows становятся невидимыми. Такого эффекта легко добиться:
Начнём с того, что подключим графическую библиотеку к списку используемых модулей.
Щелкните два раза левой кнопкой мыши по главной форме. Перед вами появятся заготовки программного кода.
Перейдите в самое начало окна программного кода и найдите список подключенных модулей.
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
Измените этот список так, как показано ниже:
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OpenGL, ExtCtrls;
Для начала проанализируем сам принцип работы программы. Вначале мы присваиваем переменным x и y случайные координаты и заносим их в буфер памяти, после чего выводим их на экран. После этого закрашиваем точку в цвет фона, и цикл повторяется до тех пор, пока мы не остановим программу. До начала работы сервер OpenGL должен определить многие характеристики аппаратурного обеспечения, также важно узнать размер пикселя, его цвет.
Именно переменная nPixelFormat содержит в себе такие характеристики.
Можно изменить интервал времени на меньший или больший, тогда точка будет появляться чаще или реже. Вам, наверное, интересно узнать, почему точка появляется только в одной четверти экранной формы. Все очень просто
Так как значения x и y могут быть только положительными, то и точка может появляться только в первой четверти системы координат. Такую систему координат мы задали оператором glViewPort (0,0,Clientwidth,Clientheight). Оператором glPointSize(20) мы задаем размер точки, а оператором glColor3f задаем ее цвет. Самый важный оператор программы (строка 57) выводит двумерную точку на экран со случайными координатами. Оператор glBegin открывает командную скобку, а оператор glEnd закрывает ее. Обратите внимание на аргумент оператора glBegin(GL_POINTS). Этот аргумент определяет, что на экране должна появится именно точка, а не какой-нибудь другой объект (линии, многоугольники также задаются с помощью оператора glVertex2f).
С помощью функции glVertex3f можно задавать точку в пространстве. Чтобы содержимое буфера выводилось на экран, мы используем функцию SwapBuffers. Не пугайтесь, что программный код получился столь громоздким. Большую его часть можно использовать как шаблон, изменяя лишь содержимое между двумя командными скобками glBegin и glEnd. Или можете создать процедуру, содержащую строки от 1 до 25, параметры которой были бы цвет, размер точек и область вывода.
Теперь можете поэкспериментировать с программой, изменяя цвет точки, ее размер, скорость появления и т. д.
Упражнения:
Вопросы:
Ответы:
Итоги:
Освоив первую главу, вы смогли написать простейшую графическую программу с использованием OpenGL, теперь можно переходить к изучению более сложного материала. Но, если вы не уверены, что прочитанное вам понятно рекомендую прочитать еще раз, так как без этих основ вы не сможете разобраться с более сложными темами.