Реферат: Основы программирования OpenGL в Borland С++Builder и Delphi. Простейшие объекты
glVertex2f(8,9);
glColor3f(0,0,1);
glVertex2f(10,4);
glEnd;
SwapBuffers(ghDC);
end;
Я уже говорил, что каждая вершина может иметь свой цвет, этим я здесь и воспользовался. И вот что получилось:
Каждой вершине указывать цвет совсем не обязательно. Если вы хотите нарисовать треугольник одного цвета, то этот цвет указывается один раз – перед рисованием самого примитива.
Забегая вперёд, скажу, что плавного перетекания цветов как на рисунке может и не быть, если перед рисованием вызвать процедуру glShadeModel(GL_FLAT), по умолчанию её параметр – GL_SMOOTH. Эта процедура указывает, сглаживать или нет углы между смежными полигонами. Вот картинки для иллюстрации её действия:
Раз уж я сказал о штриховке линий, то нужно сказать и о трафарете – штриховке для полигонов. Он включается командой glEnable(GL_POLYGON_STIPPLE). Также как и с линиями, трафарет задаётся массивом, который определяет битовую маску. Размер трафарета - 32x32 бита, т.е. размер массива будет 128 байт.
Мне было лень прописывать каждый из 128 байт маски по отдельности, и я сформировал её в цикле, и вот результат:
С++ |
void TForm1::Draw() { glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT); // формируем маску for(int k=0;k<16;k++) for(int i=0;i<8;i++) 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(); К-во Просмотров: 880
Бесплатно скачать Реферат: Основы программирования OpenGL в Borland С++Builder и Delphi. Простейшие объекты
|