Невозможно изменить цвет с помощью смешивания

Я новичок в OpenGL, и я немного застрял в смешивании. Я использую java и файл lwjgl.

В результате я хочу получить набор различных текстур с их альфа-каналом. Я уже сделал это, и у меня нет проблем. Но потом я хочу добавить точки с GL_POINTS, и у меня всегда получаются черные точки, независимо от того, какие у меня параметры glColor3f. Я думаю, что это может быть проблема смешивания.

Для текстур я использую glEnable(GL_BLEND), а затем glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA). Как я уже сказал, это работает хорошо.

Для точек я использую glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_SRC_COLOR).

public void drawPoint() {

  ...

  GL11.glColor3f(1, 0, 0);

  GL11.glBlendFunc(GL11.GL_ONE_MINUS_SRC_COLOR, GL11.GL_SRC_COLOR);

  GL11.glPointSize(3.0f);

  GL11.glBegin(GL11.GL_POINTS);

    GL11.glVertex2f(x, y);

  GL11.glEnd();

  GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
}

Я ожидаю красную точку размером 3 в (x, y), но получаю черную точку размером 3 в (x, y).

Это проблема смешивания? Если да, то как я должен сделать смешивание?

Заранее спасибо!


person user3147133    schedule 22.07.2014    source источник
comment
Это может вам помочь :) stackoverflow.com/questions/10749114/   -  person BlueEyesWhiteDragon    schedule 22.07.2014
comment
По какой причине вы используете смешивание COLOR вместо смешивания ALPHA? andersriggelsen.dk/glblendfunc.php — довольно хорошее приложение для тестирования различных режимов наложения.   -  person Colonel Thirty Two    schedule 22.07.2014
comment
Пробовали ли вы отключать текстуру перед рисованием точек?   -  person ByteBit    schedule 22.07.2014
comment
Я попробовал Интернет, @ColonelThirtyTwo, и здесь я получаю разные результаты. Это нормально, что если я изменю альфу в glColor4f с помощью смешивания альфы, она вообще не изменится?   -  person user3147133    schedule 22.07.2014
comment
Пробовал отключать текстуры, не помогло :/   -  person user3147133    schedule 22.07.2014
comment
Да, потому что в вашем уравнении смешивания не используется альфа-канал.   -  person Colonel Thirty Two    schedule 22.07.2014
comment
Если я использую GL11.glBlendFunc(GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_SRC_ALPHA), он показывает точки, но они все еще черные. Кроме того, изменение альфы по-прежнему не работает.   -  person user3147133    schedule 22.07.2014