На главную

On-line справка по OpenGL

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-L-M-N-O-P-R-S-T-U-V-W | Скачать Вниз

Porting Polygons and Quadrilaterals



· Keep the following points in mind when porting polygons and quadrilaterals:

· There is no direct equivalent for concave(TRUE). Instead you can use the tessellation routines in the GLU, described in "
Polygon Tessellation."
· Polygon modes are set differently.
· These polygon drawing functions have no direct equivalents in OpenGL:

· The poly family of routines
· The polf family of routines
· pmv, pdr, and pclos
· rpmv and rpdr
· splf
· spclos



If your IRIS GL code uses these functions, you'll have to rewrite the code using glBegin(GL_POLYGON).
The following table lists the OpenGL equivalents to IRIS GL polygon drawing calls.

IRIS GL Function OpenGL Equivalent Meaning
bgnpolygon
endpolygon glBegin(GL_POLYGON) glEnd Vertices define boundary of a simple convex polygon.
ѕ glBegin(GL_QUADS)glEnd Interpret quadruples of vertices as quadrilaterals.
bgnqstrip
endqstrip glBegin(GL_QUAD_STRIP)glEnd Interpret vertices as linked strips of quadrilaterals.
ѕ glEdgeFlag
polymode glPolygonMode Set polygon drawing mode.
rect rectf glRect Draw a rectangle.
sbox sboxf ѕ Draw a screen-aligned rectangle.


Porting Polygon Modes

The OpenGL function glPolygonMode lets you specify which side of a polygon (the back or the front) that the mode applies to. Its syntax is:

void glPolygonMode( GLenum face, GLenum mode );


where face is one of:

GL_FRONT mode which applies to front-facing polygons
GL_BACK mode which applies to back-facing polygons
GL_FRONT_AND_BACK mode which applies to both front- and back-facing polygons


The GL_FRONT_AND_BACK mode is equivalent to the IRIS GL polymode function. The following table lists IRIS GL polygon modes and the corresponding OpenGL modes.

IRIS GL Mode OpenGL Mode Meaning
PYM_POINT GL_POINT Draw vertices as points.
PYM_LINE GL_LINE Draw boundary edges as line segments.
PYM_FILL GL_FILL Draw polygon interior filled.
PYM_HOLLOW ѕ Fill only interior pixels at the boundaries.


Porting Polygon Stipples

When porting IRIS GL polygon stipples, keep the following point in mind:

· OpenGL doesn't use tables for polygon stipples; only one stipple pattern is kept. You can use display lists to store different stipple patterns.
· The OpenGL polygon stipple bitmap size is always a 32x32 bit pattern.
· Stipple encoding is affected by glPixelStore.



For more information on porting polygon stipples, see Porting Pixel Operations.
The following table lists IRIS GL polygon stipple functions and their OpenGL equivalents.

IRIS GL Function OpenGL Function Meaning
defpattern glPolygonStipple Set the stipple pattern.
setpattern ѕ OpenGL keeps only one polygon stipple pattern.
getpattern glGetPolygonStipple Return the stipple bitmap (used to return an index).


In OpenGL, you enable and disable polygon stippling by passing GL_POLYGON_STIPPLE as a parameter for glEnable and glDisable.
Here's an example OpenGL code fragment that demonstrates polygon stippling:

void display(void)
{
GLubyte fly[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,

0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30,
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0,
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30,
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08,
0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08
};
GLubyte halftone[] = {
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,

0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,

0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55
};

glClear (GL_COLOR_BUFFER_BIT);

/* draw all polygons in white*/
glColor3f (1.0, 1.0, 1.0);

/* draw one solid, unstippled rectangle,*/

/* then two stippled rectangles*/
glRectf (25.0, 25.0, 125.0, 125.0);
glEnable (GL_POLYGON_STIPPLE);
glPolygonStipple (fly);
glRectf (125.0, 25.0, 225.0, 125.0);
glPolygonStipple (halftone);
glRectf (225.0, 25.0, 325.0, 125.0);
glDisable (GL_POLYGON_STIPPLE);

glFlush ();
}


Porting Tessellated Polygons

In IRIS GL, you use concave(TRUE) and then bgnpolygon to draw concave polygons. The OpenGL GLU includes functions you can use to draw concave polygons.

To draw a concave polygon with OpenGL, follow these steps

1. Create a tessellation object.
2. Define callbacks that will be used to process the triangles generated by the tessellator.
3. Specify the concave polygon to be tessellated.



The following table lists the OpenGL functions for drawing tessellated polygons.

OpenGL GLU Function Meaning
gluNewTess Create a new tessellation object.
gluDeleteTess Delete a tessellation object.
gluTessCallback ѕ
gluBeginPolygon Begin the polygon specification.
gluTessVertex Specify a polygon vertex in a contours.
gluNextContour Indicate that the next series of vertices describe a new contour.
gluEndPolygon End the polygon specification.



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Перенесение Многоугольников и Четырехугольников



Держать следующее точек в уме при перенесении многоугольников и четырехугольников:

Нет прямого эквивалента для вогнутого(ИСТИНА). Взамен Вы можете использовать программы tessellation в GLU, описанные в " Polygon Tessellation."
Способы Многоугольника устанавливаются иначе.
Этот многоугольник, рисующий функции не имеет прямые эквиваленты в OpenGL:

Поли семейство программ семейство polf программ pmv, pdr, и pclos rpmv и rpdr splf spclos



Если ваш код IRIS GL использует эти функции, Вы должны перезаписывать код, использовавший glBegin(GL_POLYGON).
Следующий стол включает эквиваленты OpenGL многоугольнику IRIS GL, рисующие вызовы.

ИРИС GL Функционального Эквивалента OpenGL, означающий bgnpolygon
endpolygon glBegin(GL_POLYGON) Грани glEnd определяют границу простого выпуклого многоугольника.
U glBegin(GL_QUADS)glEnd Интерпретирует четверки граней как четырехугольники.
bgnqstrip
endqstrip glBegin(GL_QUAD_STRIP)glEnd Интерпретирует грани как связано полосы четырехугольников.
U glEdgeFlag
polymode glPolygonMode был Установлен многоугольник, рисующий способ.
rect rectf glRect Делает прямоугольником.
sbox sboxf U Делать выровненным экранным прямоугольником.


Перенесение Способов Многоугольника

Функция OpenGL glPolygonMode позволяет, чтобы Вы определяете какую сторону многоугольника ( обратная сторона или внешняя сторона), что способ прилагает, чтобы. Синтаксис:

аннулируйте glPolygonMode( лицо GLenum, способ GLenum );


где лицо - одно из:

способ GL_FRONT, который относится к передней облицовке способа многоугольников GL_BACK, которая относится к обратной облицовке способа многоугольников GL_FRONT_AND_BACK, которая относится к как переднему плану- так и обратная облицовка многоугольников


Способ GL_FRONT_AND_BACK является эквивалентом ИРИСУ GL polymode функция. Следующий стол включает способы многоугольника IRIS GL и соответствующие способы OpenGL.

СПОСОБ ИРИСА GL Mode OpenGL, означающий, что PYM_POINT GL_POINT Делает гранями как точками.
PYM_LINE GL_LINE Делает краями границы как сегментами линии.
PYM_FILL GL_FILL Делает заполненным интерьером многоугольника.
PYM_HOLLOW U только внутренние пиксели Наполнителя на границах.


Перенесение Многоугольника Изображается пунктиром

При, перенесение многоугольника IRIS GL изображает пунктиром, держит следующее точки в уме:

OpenGL НЕ использует столы для многоугольника изображается пунктиром; только один изображать пунктиром образец держан. Вы можете использовать дисплейные списки, чтобы хранить другой изображать пунктиром образцы.
Многоугольник OpenGL изображает пунктиром побитовое отображение, размер является всегда 32x32 битовым образцом.
Изображать пунктиром кодирование поражен glPixelStore.



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

ИРИС GL Функциональной Функции OpenGL, означающий defpattern glPolygonStipple Установленный изображать пунктиром образец.
setpattern U OpenGL держится, только один многоугольник изображает пунктиром образец.
getpattern glGetPolygonStipple Возвращает изображать пунктиром побитовое отображение (использованное, чтобы возвращать индекс).


В OpenGL, Вы приспосабливаете и выводите из строя изображение пунктиром многоугольника передавая GL_POLYGON_STIPPLE как параметр для glEnable и glDisable.
Вот кодовый фрагмент примера OpenGL, что демонстрирует изображение пунктиром многоугольника:

недействительный показ(пустота)
{
ПОЛЕТ GLubyte[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20, 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, 0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,

0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, 0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0, 0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, 0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08, 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08
};
ПОЛУТОН GLubyte[] = { 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,

0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,

0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55
};

glClear (GL_COLOR_BUFFER_BIT);

/* сделайте всеми многоугольниками в белом*/ glColor3f (1.0, 1.0, 1.0);

/* сделайте одним твердым телом, unstippled прямоугольник,*/

/* затем два изображенных пунктиром прямоугольника*/ glRectf (25.0, 25.0, 125.0, 125.0);
glEnable (GL_POLYGON_STIPPLE);
glPolygonStipple (ПОЛЕТ);
glRectf (125.0, 25.0, 225.0, 125.0);
glPolygonStipple (ПОЛУТОН);
glRectf (225.0, 25.0, 325.0, 125.0);
glDisable (GL_POLYGON_STIPPLE);

glFlush ();
}


Перенесение Сложенных мозаику Многоугольников

В IRIS GL, Вы используете вогнутый(ИСТИНА) и затем bgnpolygon, чтобы делать вогнутыми многоугольниками. OpenGL GLU Включает функции, которые Вы можете использовать, чтобы делать вогнутыми многоугольниками.

Для того, чтобы делать вогнутым многоугольником с OpenGL, последуйте за этими шагами

1. Создайте объект tessellation.
2. Определите возвраты, которые будут использованы, чтобы обрабатывать треугольники сгенерированные tessellator.
3. Определите вогнутый многоугольник, который нужно складываться мозаику.



Следующий стол включает функции OpenGL для чертежа сложившего мозаику многоугольники.

ФУНКЦИЯ OpenGL GLU, означающая, что gluNewTess Создает новый tessellation объект.
gluDeleteTess УДАЛЯЕТ объект tessellation.
gluTessCallback U
gluBeginPolygon НАЧИНАЕТ спецификацию многоугольника.
gluTessVertex ОПРЕДЕЛЯЕТ вершину многоугольника в контурах.
gluNextContour УКАЗЫВАЕТ, что следующая серия граней описывает новый контур.
gluEndPolygon ЗАКАНЧИВАЕТ спецификацию многоугольника.



Вверх Version 1.1, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод Win32 API  Русский перевод OpenGL
 
Hosted by uCoz