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

}

Delphi

procedure TForm1.Draw;

var

stip:array [1..16,1..8] of GLubyte;

i,k:byte;

begin

glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);

// формируеммаску

for k:=1 to 16 do

for i:=1 to 8 do

stip[k][i]:=k-i;

glEnable(GL_POLYGON_STIPPLE);

glPolygonStipple(@stip);

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

glColor3f(1,0,0);

glBegin(GL_TRIANGLES);

glVertex2f(0,2);

glVertex2f(8,9);

glVertex2f(10,4);

glEnd;

SwapBuffers(ghDC);

end;

Вот результат:

Вообще маска формируется один раз, поэтому, если вы перенесёте код её формирования в другое место (например в FormCreate), то программа будет работать быстрее.

Ещё хотелось бы сказать о массивах OpenGL. Этот метод позволяет хранить все вершины объекта в массиве, причем в этом массиве можно хранить не только координаты вершин, но и их атрибуты (иногда это бывает полезно). Но товарищи из Borland’а решили, что нам это не нужно и не объявили соответствующие процедуры и константы. Без этого легко можно обойтись, но всё-таки обидноL.

Параллелепипед

Не знаю, заметили вы или нет, но GLU не позволяет создавать параллелепипеды. Давайте это исправим: напишем процедуру, рисующую параллелепипед.

С++

void piped(GLfloat a, GLfloat b, GLfloat c)

{

К-во Просмотров: 879
Бесплатно скачать Реферат: Основы программирования OpenGL в Borland С++Builder и Delphi. Простейшие объекты