Blender для начинающих/Немного об OpenGL: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 153:
Прорисовка на экран всего нарисованного в буфере делается командой:
<source lang="c">auxSwapBuffers();</source>
=Дополнение=
==OpenGL в PascalABC.Net==
Пример рисования квадрата:
<source lang="Pascal">
{$reference System.Windows.Forms.dll}
{$reference System.Drawing.dll}
{$apptype windows}
 
uses
System, System.Drawing, System.Windows.Forms, OpenGL;
 
type
Form1 = class(Form)
//Уникальный идентификатор окна
_hdc: HDC;
//Инициализация
constructor Create;
begin
_hdc := GetDC(self.Handle.ToInt32());
OpenGLInit(self.Handle);
end;
//Переопределение процедуры "Рисования" окна
protected procedure OnPaint(e: System.Windows.Forms.PaintEventArgs); override;
begin
glClearColor(single(0.0), single(0.0), single(0.0), single(0.0));
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
//Настройка проекции
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
//Настройка толщины рисования линий
glLineWidth(10);
//Непосредственно само рисование
glBegin(GL_LINE_STRIP);
//Определение цвета
glColor3d(single(1.0), single(1.0), single(0.0));
//Задавание координат
glVertex2f(single(-0.5), single(-0.5));
glColor3d(single(0.0), single(1.0), single(0.0));
glVertex2f(single(-0.5), single(0.5));
glColor3d(single(0.0), single(1.0), single(1.0));
glVertex2f(single(0.5), single(0.5));
glColor3d(single(0.0), single(1.0), single(1.0));
glVertex2f(single(0.5), single(-0.5));
glColor3d(single(1.0), single(1.0), single(0.0));
glVertex2f(single(-0.5), single(-0.5));
glEnd();
glFlush();
SwapBuffers(_hdc);
end;
//Завершение работы при закрытии формы
procedure Form_Closed(sender: object; e: EventArgs);
begin
OpenGLUninit(self.Handle);
end;
//Поведение при изменении размера окна
procedure Form_Resize(sender: object; e: EventArgs);
begin
glViewport(0, 0, Width, Height);
end;
end;
 
var
f: Form1;
 
begin
f := new Form1();
f.Resize += f.Form_Resize;
f.Closed += f.Form_Closed;
//Запуск приложения с формой
Application.Run(f);
end.
</source>