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

Содержимое удалено Содержимое добавлено
м Откат правок Владислав Молдован (обс.) к версии Volobuev Ilya
м <source> -> <syntaxhighlight> (phab:T237267)
Строка 14:
==Представление цвета в OpenGL==
Цвет в OpenGL представляется в виде трех чисел: красного, зеленого и синего компонентов. Все параметры задаются в диапазоне от 0 до 1. Установить цвет можно функцией:
<sourcesyntaxhighlight lang="C">GLColor3f(R, G, B)</sourcesyntaxhighlight>
Например, красный цвет устанавливается вот так:
<sourcesyntaxhighlight lang="C">GLColor3f(1.0, 0.0, 0.0)</sourcesyntaxhighlight>
Устанавливать цвет можно абсолютно для любого примитива.
 
Строка 67:
|}
Пример рисования фигур со сдвигом системы координат:
<sourcesyntaxhighlight lang="C">
glPushMatrix();
glTranslate(1.4,0,0);
Строка 80:
glColor3f(1,0,0);
auxSolidSphere(0.75); // А теперь рисуем сферу в точке (0, 0, 0).
</syntaxhighlight>
</source>
[[File:OpenGL2.jpg|frameless]]
 
==Примитивы OpenGL==
Каждый примитив в OpenGL рисуется следующим образом:
<sourcesyntaxhighlight lang="C">
glBegin(GLenum mode);
// Функции отрисовки фигуры.
glEnd();
</syntaxhighlight>
</source>
* mode может принимать одно из нескольких значений: GL_POINTS (для рисования только точек), GL_LINES (для рисования линий - каждая пара вершин задает отрезок), GL_LINE_STRIP (рисуется ломаная через все точки, указанные между glBegin и glEnd), GL_TRIANGLES (каждые 3 вершины задают треугольник), GL_TRIANGLE_STRIP (рисуются треугольники с общей стороной), GL_QUADS (каждые две подряд стоящие пары вершин задают четырехугольник).
 
Строка 120:
===Примитивы OpenGL===
Для создания любого из примитивов, приведенных ниже, следует сначала объявить объект типа GLUquadricObj:
<sourcesyntaxhighlight lang="c">GLUquadricObj *name</sourcesyntaxhighlight>
Далее инициализировать его:
<sourcesyntaxhighlight lang="c">name = gluNewQuadric();</sourcesyntaxhighlight>
И затем рисовать с его помощью примитивы.
* Стиль примитива, который будет нарисован, задается функцией gluQuadricDrawStyle. В ней первый параметр - ссылка на объект типа GLUquadricObj, второй - стиль отрисовки (GLU_POINT - рисуются только точки, GLU_LINE - рисуются только линии, GLU_FILL - фигура рисуется сплошной).
Строка 137:
===Сглаживание цветов===
Сглаживание цветов включается функцией:
<sourcesyntaxhighlight lang="c">glShadeModel(GL_SMOOTH);</sourcesyntaxhighlight>
А отключается так:
<sourcesyntaxhighlight lang="c">glShadeModel(GL_FLAT);</sourcesyntaxhighlight>
===Плоскости отсечения===
Если Вам надо нарисовать какой-то объект урезанным, то используйте плоскости отсечения. Их может быть 6. Все они называются так: GL_CLIP_PLANE0, GL_CLIP_PLANE1, GL_CLIP_PLANE2, GL_CLIP_PLANE3, GL_CLIP_PLANE4 и GL_CLIP_PLANE5. Для включения плоскости отсечения пишите:
<sourcesyntaxhighlight lang="c">glEnable(p);</sourcesyntaxhighlight>
Где p - имя одной из перечисленных выше плоскостей. Вспомните, что плоскость задается уравнением A*x+B*y+C*z+D = 0. Если хотите задать плоскости в OpenGL делайте так:
<sourcesyntaxhighlight lang="c">glClipPlane(p, a);</sourcesyntaxhighlight>
Где p - имя одной из перечисленных выше плоскостей; a - массив из четырех чисел, являющихся коэффициентами A, B, C и числом D.
* Для удаления плоскости - ее деактивации используйте такую конструкцию:
<sourcesyntaxhighlight lang="c">glDisable(p);</sourcesyntaxhighlight>
Где p - имя одной из перечисленных выше плоскостей.
 
==Отображение нарисованного==
Прорисовка на экран всего нарисованного в буфере делается командой:
<sourcesyntaxhighlight lang="c">auxSwapBuffers();</sourcesyntaxhighlight>