为什么我的彩色立方体不能与GL_BLEND一起使用?

时间:2009-04-06 15:32:16

标签: c++ opengl 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 ...

3 个答案:

答案 0 :(得分:1)

看起来你在第二个上启用了照明,

在绘图之前尝试使用glShadeModel(GL_FLAT),

答案 1 :(得分:1)

您可以在绘制多维数据集之前尝试禁用所有光照:

glDisable(GL_LIGHTING);

答案 2 :(得分:0)

这让我st脚。看起来是一些顶点有一些不透明的alpha值。但是,您发布的代码全部为1. alpha。所以...为了调试更多,你是否尝试将你的清晰颜色改为非黑色?说绿色? 从代码中,我怀疑光照已打开,因为没有指定法线。

最后评论,offtopic ......你真的不应该使用glBegin / glEnd(每个顶点2个函数调用+每个基元2个实际上并不能很好地利用OpenGL的最新发展)。尝试glDrawElementsQUAD_LIST,甚至更好,TRIANGLE_LIST。你已经为此准备了很好的数据。