2009-11-18 3 views
4

Я пытаюсь рисовать на белом фоне с помощью обратного проектирования GLPaint. Я прошел через каждую комбинацию kSaturation, kLuminosity и glBlendFunc, и почти каждую комбинацию, которую я могу придумать для текстуры кисти (черный на белом, белый на черном, белый на транс, псевдоним/нет псевдонимов и т. Д.), t наткнулся на желаемый эффект.GLPaint с белым фоном

Лучшее, что я смог достичь, - это круг белого цвета на транс, с glBlendFunc (GL_ SRC_ ALPHA, GL_ ONE_ MINUS_ SRC_ ALPHA), но это все еще дает мне скучный цвет, trans внешние биты интерпретируются как черные (т.е. тускло-зеленые с черными краями, вместо яркого зеленого с прозрачными краями). Как будто он все еще предполагает, что я на черном фоне.

Любые советы?

alt text http://www.straandlooper.com/GLPaint.png

+0

Возможно, вам придется играть также с glTexEnv (GL_TEXTURE_ENV, ...). Можете ли вы опубликовать также код настройки текстуры? Что такое формат текстуры? Только альфа или непрозрачная текстура? – MaR

+0

Привет, Кевин, ты мог понять это? Я застрял на той же проблеме, не могу избавиться от черного контура вокруг цвета .... – Sharief

+0

Bump - Я пытаюсь сделать то же самое. Какой-либо прогресс? –

ответ

0

Yup, glEnable (GL_BLEND) находится там. В основном я начал с GLPaint и изменил фон на белый, а остальная часть кода такая же. Я должен предположить, что, поскольку GLPaint был сделан с черным фоном, есть некоторый бит кода, который идеально сочетается с черным, и я не знаю, какой переключатель переключиться (или, действительно, какие переключатели могут быть перевернуты.) Heck, какие переключатели даже существуют).

Вот что там по умолчанию. Лемм знать, если вы видите что-то криво ...

glDisable (GL_DITHER)

glMatrixMode (GL_PROJECTION)

glMatrixMode (GL_MODELVIEW)

glEnable (GL_TEXTURE _2D)

glEnableClientState (gl_Vertex _ARRAY)

glEnable (GL_BLEND)

glBlendFunc (GL_SRC _alpha, GL_ONE _MINUS _SRC _alpha)

glEnable (GL_POINT _SPRITE _OES)

glEnable (GL_COLOR _MATERIAL)

Я не возражаю вам говорю, я понятия не имею, что любой из них. -kev.

1

Я считаю, что это то, что вы хотите, чтобы он работал на белом: glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

Затем используйте белый круг «Particle.png», который перпендикулярно прозрачности (ваш «лучший» пример).

Это должно дать желаемый результат.

+0

Это не сработало для меня, просто изменив функцию смешивания и оставив все остальное одинаково. – Adam

Смежные вопросы