Это походит на плохую идею. Liskov не был бы впечатлен.
, Если Вы не хотите, чтобы потребители DerivedClass были в состоянии к методам доступа DeriveClass. () и DerivedClass. B () я предложил бы, чтобы DerivedClass реализовал некоторый открытый интерфейс, IWhateverMethodCIsAbout и потребители DerivedClass должны на самом деле говорить с IWhateverMethodCIsAbout и ничего не знать о реализации BaseClass или DerivedClass вообще.
Решение Николая верное; пожалуйста, не обращайте внимания на то, что я сказал на форумах Apple. Поскольку текстура предварительно умножается, цвет для каждой вершины должен быть таким же. Вы должны использовать GL_ONE , а не GL_SRC_ALPHA , и сделайте следующее:
glColor4f(1., 1., 1., myDesiredAlpha);glColor4f(myDesiredAlpha, myDesiredAlpha, myDesiredAlpha, myDesiredAlpha);
Возможно, я не понимаю вас, но мне это кажется тривиальным, и я успешно справляюсь с этим с помощью своих приложений. Для этого нужно:
glEnable (GL_BLEND)
glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
glColor4f (r * a, g * a, b * a, a)
Функция смешивания предназначена для porter-duff поверх с использованием предварительно умноженных цветов / текстуры. GL_TEXTURE_ENV_MODE
должен иметь значение GL_MODULATE
, но это значение по умолчанию.