GL_TEXTURE_MAX_LOD
GL_TEXTURE_BASE_LEVEL
GL_TEXTURE_MAX_LEVEL
GL_TEXTURE_ENV_MODE
GL_TEXTURE_ENV_COLOR
GL_TEXTURE_GEN_x
GL_EYE_PLANE
GL_OBJECT_PLANE
GL_TEXTURE_GEN_MODE
GL_ACTIVE_TEXTURE_ARB
Максимальный
уровень
детализации
Базовый
текстурный
массив
Максимальный
уровень
текстурного
массива
Режим
наложения
текстуры
Цвет
окружения
текстуры
Активность
автоматическо й генерации координат (где x – S, T или R)
Коэффициенты
уравнения плоскости для вычисления координат текстуры
Коэффициенты
уравнения плоскости в объектных координатах для вычисления координат текстуры
Режим
генерирования
текстурных
координат
активный
текстурный
блок
текстура
текстура
текстура
текстура
текстура
текстура/включенн
ые
текстура
текстура
текстура
текстура
1000
0
1000
GL_MODULAT E
(0,0,0,0)
GL_FALSE
-
-
GL_EYE_
LINEAR
GL_TEXTURE 0_ ARB
glGetTexParameterfv()
glGetTexParameterfv()
glGetTexParameterfv()
glGetTexEnviv()
glGetTexEnvfv()
glIsEnabled()
glGetTexGenfv()
glGetTexGenfv()
glGetTexGeniv()
glGetIntegerv()
Таблица A-8. Пиксельные операции
|
Переменная состояния |
Описание |
Группа атрибутов |
Начальное |
Опросная |
|
значение |
команда |
|
|
|
|
|
GL_SCISSOR_TEST |
Активность теста |
отрез/ включенные |
GL_FALSE |
glIsEnabled() |
|
|
отреза |
|
|
|
|
|
Габариты |
|
|
|
|
GL_SCISSOR_BOX |
прямоугольника |
отрез |
- |
glGetIntegerv() |
|
|
для теста отреза |
|
|
|
|
GL_ALPHA_TEST |
Активность |
цветовой |
GL_FALSE |
glIsEnabled() |
|
альфа теста |
буфер/включенные |
|
|
|
|
|
GL_ALPHA_TEST_FUNC |
Функция альфа |
цветовой буфер |
GL_ALWAYS |
glGetIntegerv() |
|
теста |
|
|
|
|
|
|
|
Сравниваемое |
|
|
|
|
GL_ALPHA_TEST_REF |
значения для |
цветовой буфер |
0 |
glGetIntegerv() |
|
|
альфа теста |
|
|
|
|
GL_STENCIL_TEST |
Активность теста |
буфер |
GL_FALSE |
glIsEnabled() |
|
трафарета |
трафарета/включенные |
|
GL_STENCIL_FUNC |
Функция для |
буфер трафарета |
GL_ALWAYS |
glGetIntegerv() |
|
теста трафарета |
|
|
|
|
|
|
GL_STENCIL_VALUE_MASK |
Маска теста |
буфер трафарета |
Единицы |
glGetIntegerv() |
|
трафарета |
|
|
|
|
|
|
GL_STENCIL_REF |
Сравниваемое |
буфер трафарета |
0 |
glGetIntegerv() |
|
|
|
|
|
|
GL_STENCIL_FAIL
GL_STENCIL_PASS_DEPTH_FAIL
GL_STENCIL_PASS_DEPTH_PASS
GL_DEPTH_TEST
GL_DEPTH_FUNC
GL_BLEND
GL_BLEND_SRC
GL_BLEND_DST
GL_BLEND_EQUATION
GL_BLEND_COLOR
GL_DITHER
GL_INDEX_LOGIC_OP
GL_COLOR_LOGIC_OP
GL_LOGIC_OP_MODE
значение теста трафарета
|
Действие при |
|
|
провале теста |
буфер трафарета |
|
трафарета |
|
|
Действие при |
|
|
прохождении |
|
|
теста трафарета |
буфер трафарета |
|
и провале теста |
|
|
глубины |
|
|
Действие при |
|
|
прохождении |
|
|
теста трафарета |
буфер трафарета |
|
и прохождении |
|
|
теста глубины |
|
|
Активность теста |
буфер |
|
глубины |
глубины/включенные |
|
Функция теста |
буфер глубины |
|
глубины |
|
|
|
Активность |
цветовой |
|
цветового |
|
буфер/включенные |
|
наложения |
|
|
|
Фактор |
|
|
источника |
цветовой буфер |
|
цветового |
|
|
|
наложения |
|
|
Фактор |
|
|
приемника |
цветовой буфер |
|
цветового |
|
|
|
наложения |
|
|
Уравнение |
|
|
цветового |
цветовой буфер |
|
наложения |
|
|
Постоянный цвет |
цветовой буфер |
|
наложения |
|
|
Активность |
цветовой буфер/ |
|
микширования |
включенные |
|
Активность |
|
|
логических |
цветовой буфер/ |
|
операций над |
|
включенные |
|
цветовыми |
|
|
|
индексами |
|
|
Активность |
|
|
логических |
цветовой буфер/ |
|
операций над |
включенные |
|
RGBA цветами |
|
|
Применяемая |
|
|
логическая |
цветовой буфер |
|
операция |
|
GL_KEEP glGetIntegerv()
GL_KEEP glGetIntegerv()
GL_KEEP glGetIntegerv()
GL_FALSE glIsEnabled()
GL_LESS glGetIntegerv()
GL_FALSE glIsEnabled()
GL_ONE glGetIntegerv()
GL_ZERO glGetIntegerv()
GL_FUNC_ADD glGetIntegerv()
(0,0,0,0) glGetFloatv() GL_TRUE glIsEnabled()
GL_FALSE glIsEnabled()
GL_FALSE glIsEnabled()
GL_COPY glGetIntegerv()
Таблица A-9. Управление буфером кадра
|
Переменная состояния |
Описание |
Группа |
Начальное |
Опросная |
|
атрибутов |
значение |
команда |
|
|
|
|
GL_DRAW_BUFFER |
Буферы, выбранные для |
цветовой |
- |
glGetIntegerv() |
|
записи |
буфер |
|
|
|
|
|
GL_INDEX_WRITEMASK |
Маска записи цветовых |
цветовой |
Единицы |
glGetIntegerv() |
|
индексов |
буфер |
|
|
|
|
|
GL_COLOR_WRITEMASK |
Маска записи RGBA |
цветовой |
GL_TRUE |
glGetBooleanv() |
|
цветов |
буфер |
|
|
|
|
|
GL_DEPTH_WRITEMASK |
Доступность буфера |
буфер глубины |
GL_TRUE |
glGetBooleanv() |
|
глубины для записи |
|
|
|
|
|
|
GL_STENCIL_WRITEMASK |
Маска записи индексов |
буфер |
Единицы |
glGetIntegerv() |
|
трафарета |
трафарета |
|
|
|
|
|
GL_COLOR_CLEAR_VALUE |
Очищающий цвет (RGBA) |
цветовой |
(0,0,0,0) |
glGetFloat() |
|
буфер |
|
|
|
|
|
|
|
|
|
|
|
GL_POST_CONVOLUTION_x_BIAS
GL_POST_COLOR_MATRIX_x_SC ALE
GL_POST_COLOR_MATRIX_x_BIA S
GL_HISTOGRAM
GL_HISTOGRAM
GL_HISTOGRAM_WIDTH
GL_HISTOGRAM_FORMAT
GL_HISTOGRAM_x_SIZE
GL_HISTOGRAM_SINK
GL_MINMAX
GL_MINMAX
GL_MINMAX_FORMAT
GL_MINMAX_SINK
GL_ZOOM_X
GL_ZOOM_Y
GL_PIXEL_MAP_x
GL_PIXEL_MAP_x_SIZE
GL_READ_BUFFER
GREEN, BLUE или ALPHA)
Пост фильтрационный скос (где x – RED, GREEN, BLUE или ALPHA)
Пост матричный масштаб (где x – RED, GREEN, BLUE или ALPHA)
Пост матричный скос
(где x – RED, GREEN, BLUE или ALPHA)
Активность
гистограммы
Таблица гистограммы
Ширина гистограммы
Формат гистограммы
Разрешение цветовых компонент гистограммы (где x –
RED, GREEN, BLUE, ALPHA или LUMINANCE)
Поглощение пиксельных групп
Активность расчетов минимального и максимального цветовых значений
Таблица минимальных и максимальных цветовых значений
Формат минимальных и максимальных цветовых значений
Поглощение пиксельных групп
Фактор масштаба по X Фактор масштаба по Y
Таблицы отображения пикселей
Размер таблицы
Текущий буфер для чтения
пиксели 0
пиксели 1
пиксели 0
пиксели/
включенн GL_FALSE
ые
-Пусто
-0
-GL_RGBA
-0
-GL_FALSE
пиксели/
включенн GL_FALSE
ые
Таблица
минимумов
устанавлива ется в максимально допустимые
-величины, а
таблица
максимумов
– в
минимально
представляе
мые
-GL_RGBA
-GL_FALSE
пиксели 1.0 пиксели 1.0
-Нули
-1
пиксели -
glGetFloatv()
glGetFloatv()
glGetFloatv()
glIsEnabled()
glGetHistogram()
glGetHistogramParamete riv()
glGetHistogramParamete riv()
glGetHistogramParamete riv()
glGetHistogramParamete riv()
glIsEnabled()
glGetMinmax()
glGetMinmaxParameteri v()
glGetMinmaxParameteri v()
glGetFloatv()
glGetFloatv()
glGetPixelMap*()
glGetIntegerv()
glGetIntegerv()
Таблица A-11. Вычислители
|
Переменная состояния |
Описание |
Группа атрибутов |
Начальное |
Опросная |
|
значение |
команда |
|
|
|
|
|
GL_ORDER |
порядок 1D |
- |
1 |
glGetMapiv() |
|
карты |
|
|
|
|
|
|
GL_ORDER |
порядок 2D |
- |
1,1 |
glGetMapiv() |
|
|
|
|
|
|
GL_COEFF
GL_COEFF
GL_DOMAIN
GL_DOMAIN
GL_MAP1_x
GL_MAP2_x
GL_MAP1_GRID_DOMAIN
GL_MAP2_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP2_GRID_ SEGMENTS
GL_AUTO_NORMAL
GL_PERSPECTIVE_CORRECTION_HI NT
GL_POINT_SMOOTH_HINT
GL_LINE_SMOOTH_HINT
GL_POLYGON_SMOOTH_HINT
GL_FOG_HINT
карты
контрольные точки 1D
карты
контрольные точки 2D
карты
1D конечные
точки
2D конечные
точки
Активность 1D карты (где x – тип карты)
Активность 2D карты (где x – тип карты)
Конечные точки 1D
сетки
Конечные точки 2D
сетки
Разделители 1D сетки
Разделители 2D сетки
Активность
автоматическо й генерации нормалей
Комплексная
установка
перспективно й коррекции
Комплексная
установка
сглаживания
точек
Комплексная
установка
сглаживания
линий
Комплексная
установка
сглаживания
полигонов
Комплексная
установка
качества
тумана
-
-
-
-
вычислители/включенн
ые
вычислители/
включенные
вычислители
вычислители
вычислители
вычислители
вычислители
комплексные установки
комплексные установки
комплексные установки
комплексные установки
комплексные установки
-glGetMapfv()
-glGetMapfv()
-glGetMapfv()
-glGetMapfv()
GL_FALSE |
glIsEnabled() |
GL_FALSE |
glIsEnabled() |
0,1 |
glGetFloatv() |
0,1;0,1 |
glGetFloatv() |
1 |
glGetFloatv() |
1,1 |
glGetFloatv() |
GL_FALSE |
glIsEnabled() |
GL_DONT_CAR |
glGetIntegerv |
E |
() |
GL_DONT_CAR |
glGetIntegerv |
E |
() |
GL_DONT_CAR |
glGetIntegerv |
E |
() |
GL_DONT_CAR |
glGetIntegerv |
E |
() |
GL_DONT_CAR |
glGetIntegerv |
E |
() |
Таблица A-12. Значения, зависящие от реализации
|
|
|
Группа |
Минимальн |
|
|
Переменная состояния |
Описание |
атрибут |
ое |
Опросная команда |
|
|
|
ов |
значение |
|
|
|
Максимальное |
|
|
|
|
GL_MAX_LIGHTS |
количество |
- |
8 |
glGetIntegerv() |
|
|
источников света |
|
|
|
|
|
Максимальное |
|
|
|
|
GL_MAX_CLIP_PLANES |
количество |
- |
6 |
glGetIntegerv() |
|
отсекающих |
|
|
|
|
|
|
|
плоскостей |
|
|
|
|
GL_MAX_MODELVIEW_STACK_DEP |
Максимальная |
- |
32 |
glGetIntegerv() |
|
TH |
глубина стека |
|
|
|
|
|
|
|
|
|
|
|
GL_SMOOTH_LINE_WIDTH_GRANU |
Гранулярность |
|
|
|
|
толщины |
- |
- |
glGetFloatv() |
|
LARITY |
|
сглаженных линий |
|
|
|
|
|
|
|
|
|
GL_MAX_CONVOLUTION_WIDTH |
Максимальная |
- |
1 |
glGetConvolutionParamet |
|
ширина фильтра |
eriv() |
|
|
|
|
|
GL_MAX_CONVOLUTION_HEIGHT |
Максимальная |
- |
1 |
glGetConvolutionParamet |
|
высота фильтра |
eriv() |
|
|
|
|
|
|
Рекомендуемое |
|
|
|
|
|
максимальное |
|
|
|
|
GL_MAX_ELEMENTS_INDICES |
число индексов |
- |
- |
glGetIntegerv() |
|
при использовании |
|
|
|
|
|
|
|
glDrawRangeElemen |
|
|
|
|
|
ts() |
|
|
|
|
|
Рекомендуемое |
|
|
|
|
|
максимальное |
|
|
|
|
GL_MAX_ELEMENTS_VERTICES |
число вершин при |
- |
- |
glGetIntegerv() |
|
использовании |
|
|
|
|
|
|
|
glDrawRangeElemen |
|
|
|
|
|
ts() |
|
|
|
|
|
Максимальное |
|
|
|
|
GL_MAX_TEXTURE_UNITS_ARB |
число текстурных |
- |
1 |
glGetIntegerv() |
|
|
блоков |
|
|
|
|
|
|
|
|
|
Таблица A-13. Глубина пикселей, зависящая от реализации
|
Переменная |
Описание |
Группа |
Минимальное |
Опросная |
|
состояния |
атрибутов |
значение |
команда |
|
|
|
|
Число бит на красный |
|
|
|
|
|
GL_RED_BITS |
компонент в цветовом |
- |
|
- |
glGetIntegerv() |
|
|
буфере |
|
|
|
|
|
|
Число бит на зеленый |
|
|
|
|
|
GL_GREEN_BITS |
компонент в цветовом |
- |
|
- |
glGetIntegerv() |
|
|
буфере |
|
|
|
|
|
|
Число бит на синий |
|
|
|
|
|
GL_BLUE_BITS |
компонент в цветовом |
- |
|
- |
glGetIntegerv() |
|
|
буфере |
|
|
|
|
|
|
Число бит на альфа |
|
|
|
|
|
GL_ALPHA_BITS |
компонент в цветовом |
- |
|
- |
glGetIntegerv() |
|
|
буфере |
|
|
|
|
|
GL_INDEX_BITS |
Число бит на индекс в |
- |
|
- |
glGetIntegerv() |
|
цветовом буфере |
|
|
|
|
|
|
|
|
GL_DEPTH_BITS |
Число бит на глубину в |
- |
|
- |
glGetIntegerv() |
|
буфере глубины |
|
|
|
|
|
|
|
|
GL_STENCIL_BITS |
Число бит на индекс в |
- |
|
- |
glGetIntegerv() |
|
буфере трафарета |
|
|
|
|
|
|
|
|
|
Число бит на красный |
|
|
|
|
|
GL_ACCUM_RED_BITS |
компонент в буфере |
- |
|
- |
glGetIntegerv() |
|
|
аккумулятора |
|
|
|
|
|
|
Число бит на зеленый |
|
|
|
|
|
GL_ACCUM_GREEN_BITS |
компонент в буфере |
- |
|
- |
glGetIntegerv() |
|
|
аккумулятора |
|
|
|
|
|
|
Число бит на синий |
|
|
|
|
|
GL_ACCUM_BLUE_BITS |
компонент в буфере |
- |
|
- |
glGetIntegerv() |
|
|
аккумулятора |
|
|
|
|
|
|
Число бит на альфа |
|
|
|
|
|
GL_ACCUM_ALPHA_BITS |
компонент в буфере |
- |
|
- |
glGetIntegerv() |
|
|
аккумулятора |
|
|
|
|
|
|
|
|
|
|
|
Таблица A-14. Дополнительные |
|
|
|
|
|
|
|
|
|
|
|
|
Переменная состояния |
Описание |
|
Группа |
Начальное |
Опросная |
|
|
атрибутов значение |
команда |
|
|
|
|
|
GL_LIST_BASE |
Установка glListBase() |
список |
0 |
glGetIntegerv() |
|
GL_LIST_INDEX |
Номер конструируемого |
- |
0 |
glGetIntegerv() |
|
списка отображения, 0 – |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
если такого нет |
|
|
|
|
|
Режим конструируемого |
|
|
|
|
GL_LIST_MODE |
списка, 0 – если такого |
- |
0 |
glGetIntegerv() |
|
|
нет |
|
|
|
|
GL_ATTRIB_STACK_DEPTH |
Указатель на стек |
- |
0 |
glGetIntegerv() |
|
атрибутов |
|
|
|
|
|
|
GL_CLIENT_ATTRIB_STACK_DEPTH |
Указатель на клиентский |
- |
0 |
glGetIntegerv() |
|
стек атрибутов |
|
GL_NAME_STACK_DEPTH |
Глубина стека имен |
- |
0 |
glGetIntegerv() |
|
|
Текущий режим |
|
|
|
|
GL_RENDER_MODE |
визуализации |
- |
GL_RENDER |
glGetIntegerv() |
|
|
(glRenderMode()) |
|
|
|
|
GL_SELECTION_BUFFER_POINTER |
Указатель на буфер |
выбор |
0 |
glGetPointerv() |
|
выбора |
|
|
|
|
|
|
GL_SELECTION_BUFFER_SIZE |
Размер буфера выбора |
выбор |
0 |
glGetIntegerv() |
|
GL_FEEDBACK_BUFFER_POINTER |
Указатель на буфер |
отклик |
0 |
glGetPointerv() |
|
отклика |
|
|
|
|
|
|
GL_FEEDBACK _BUFFER_SIZE |
Размер буфера отклика |
отклик |
0 |
glGetIntegerv() |
|
GL_FEEDBACK _BUFFER_TYPE |
Тип буфера отклика |
отклик |
GL_2D |
glGetIntegerv() |
|
- |
Код текущей ошибки |
- |
0 |
glGetError() |
|
(ошибок) |
|
|
|
|
|
|
|
|
|
|
|
Приложение B. Вычисление векторов нормалей
В этом приложении описываются детали вычислений нормалей к поверхностям, необходимых для использования освещения в OpenGL.
Поскольку нормали являются перпендикулярами к поверхности, вы можете начать поиск нормали в конкретной точке с нахождения плоскости, которая касается вашей поверхности только в одной этой точке. Нормаль – это вектор перпендикулярный к этой плоскости. На идеальной сфере, например, нормаль к точке поверхности имеет то же направление, что и вектор из центра сферы в эту точку. Для других типов поверхностей существуют иные лучшие способы нахождения нормалей, зависящие от того, как задается поверхность.
Помните о том, что гладкие поверхности аппроксимируютсяя большим числом небольших плоских полигонов. Если векторы, перпендикулярные к этим полигонам используются в качестве нормалей аппроксимированных поверхностей, то сами поверхности выглядят сегментированными, поскольку пространство векторов не является непрерывным за границами полигонов. Однако во многих случаях для модели существует точное математическое описание, и в каждой точке может быть вычислен вектор истинной нормали. Использование истинных нормалей существенно улучшает результат визуализации, как показано на рисунке B-1. Даже если у вас нет математического описания поверхности, вы можете добиться лучшего результата, чем сегментированная поверхность.
Рисунок B-1. Истинные нормали (справа) против полигональных нормалей (слева)