частично открытые перекрывающиеся фигуры в openGL - PullRequest
0 голосов
/ 31 июля 2011

Пожалуйста, проверьте этот аккуратный фрагмент кода, который я нашел:

glEnable(GL_LINE_SMOOTH);

glColor4ub(0, 0, 0, 150);
mmDrawCircle( ccp(100, 100), 20, 0, 50, NO);

glLineWidth(40);
ccDrawLine(ccp(100, 100), ccp(100 + 100, 100));

mmDrawCircle( ccp(100+100, 100), 20, 0, 50, NO);

, где mmDrawCircle и ccDrawLine просто как-то рисуют эти фигуры [FILLED] ... (ccp означает точку с заданными координатами x, y соответственно).

Моя проблема .... Да, вы уже догадались, линия перекрывается с кругом, и оба они полупрозрачные (полупрозрачные).Итак, окончательная форма есть, но перекрывающаяся часть становится темнее, и общая форма выглядит некрасиво. то есть, я бы хорошо, если бы я рисовал с 255 альфа.

Есть лиспособ заставить OpenGL визуализировать одну из фигур в перекрывающихся частях ??

(форма, очевидно, представляет собой прямоугольник с закругленными краями .. полукруги ..)

1 Ответ

2 голосов
/ 31 июля 2011

Вы можете включить GL_DEPTH_TEST и визуализировать линию сначала и немного ближе к камере. Когда вы визуализируете кружок ниже, фрагменты линии не будут затронуты. (Вы также можете использовать буфер трафарета для такого эффекта).

Обратите внимание, что это может выглядеть уродливо. Если вы хотите использовать сглаживание, вам следует хорошо подумать, какие режимы смешивания вы применяете и в каком порядке вы визуализируете примитивы.

...