2009-04-06 1 views
1

Мой куб не отображается как ожидалось, когда я использую GL_BLEND.Почему мой цветной куб не работает с GL_BLEND?

glEnable(GL_CULL_FACE); 
glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE); 

Я также имеющий аналогичные проблемы с рисованием некоторых полупрозрачный вершин впереди, которые вполне могут быть связаны между собой.

Похожие: Why do my semi-opaque vertices make background objects brighter in OpenGL?

Вот что он должен выглядеть следующим образом:

Normal cube http://img408.imageshack.us/img408/2853/normalcube.png

А вот то, что это на самом деле выглядит следующим образом:

Dark cube http://img7.imageshack.us/img7/7133/darkcube.png

См. Код, используемый для create the colored cube, и код, используемый на самом деле draw the cube.

Куб втягивается так:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

glPushMatrix(); 
glLoadIdentity(); 

// ... do some translation, rotation, etc ... 

drawCube(); 

glPopMatrix(); 

// ... swap the buffers ... 
+0

Вы получили первое изображение из своей программы? –

ответ

1

Вы может попытаться отключить все освещение перед тем, как нарисовать куб:

glDisable(GL_LIGHTING); 
1

Похоже, у вас есть освещение активировано на второй,

попробовать с glShadeModel (GL_FLAT) перед нанесением,

+0

Хм, нет, это делает стороны куба сплошными цветами, но только 3 из них ... –

0

Это меня топтало. Похоже, что некоторые вершины имеют некоторые альфа-значения, которые непрозрачны. Однако код, который вы опубликовали, имеет все 1. для альфа. Итак ... чтобы еще больше отлаживать, пытались ли вы изменить свой четкий цвет на что-то нечерное? Скажите, зеленый? Из кода, я сомневаюсь, что освещение включено, поскольку никаких нормалей не указано.

Последний комментарий, offtopic ... Вы действительно не должны использовать glBegin/glEnd (2 вызова функций на вершину + 2 на примитив действительно не являются хорошим использованием последних разработок в OpenGL). Попробуйте glDrawElements с QUAD_LIST, или даже лучше, TRIANGLE_LIST. Для этого у вас уже есть данные, которые хорошо выложены.