Смешивание оттенков серого с OpenGL? - PullRequest
2 голосов
/ 23 октября 2010

Есть ли способ установить параметры смешивания, чтобы вся сцена отображалась в оттенках серого? (без использования GLSL, только функции конвейера)

Спасибо

Ответы [ 3 ]

0 голосов
/ 24 октября 2010

Хм, может быть, если бы оно было передано в luminoscity + alpha FBO, а затем это нарисовано?

Ну, или это, или скопировал на такую ​​текстуру, затем текстуру обратно на FBO - при этом FBO в большинстве случаев будет лучшим решением (если доступно).

Обратите внимание, что я не проверял это.

0 голосов
/ 24 октября 2010

На самом деле, для полноты картины я упомяну, что есть одно возможное решение, если поддерживается расширение GL_ARB_imaging: GL_COLOR_MATRIX, который преобразует входящие значения RGBA.Вы можете установить верхнюю матрицу 3x3 на все 1 / 3.0 следующим образом:

GLFloat graymat[] = {.33,.33,.33,0,.33,.33,.33,0,.33,.33,.33,0,0,0,0,1};
glMatrixMode(GL_COLOR_MATRIX)
glLoadIdentity()
glMultMatrixf(graymat)

Как бы здорово это не звучало, хотя не все драйверы поддерживают это аппаратно, что означает, что в зависимости от вашей реализации opengl, вашДрайвер может: A) полностью игнорировать цветовую матрицу, B) переключиться на программный рендеринг или C) (если расширение не поддерживается) вызвать GLError.

Если вы пишете свой код для ограниченного набора платформ, и они поддерживают это расширение, то это будет самый простой способ.В противном случае вам понадобится другой подход.

0 голосов
/ 23 октября 2010

Нет, все цвета разделены.Вам нужен пиксельный шейдер для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...