1

当我使用 GL_BLEND 时,我的立方体未按预期呈现。

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

在前面绘制一些半透明顶点时,我也遇到了类似的问题,这很可能是相关的。

相关:为什么我的半透明顶点在 OpenGL 中使背景对象更亮?

这是它应该看起来的样子:

普通立方体 http://img408.imageshack.us/img408/2853/normalcube.png

这就是它的实际样子:

暗魔方 http://img7.imageshack.us/img7/7133/darkcube.png

请参阅用于创建彩色立方体的代码,以及用于实际绘制立方体的代码。

立方体是这样绘制的:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glLoadIdentity();

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

drawCube();

glPopMatrix();

// ... swap the buffers ...
4

3 回答 3

1

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

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

于 2009-04-07T08:05:59.517 回答
1

您可以在绘制立方体之前尝试禁用所有照明:

glDisable(GL_LIGHTING);
于 2009-06-12T17:18:04.670 回答
0

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

最后的评论,offtopic ...你真的不应该使用glBegin/ glEnd(每个顶点2个函数调用+每个图元2个对于OpenGL最近的发展来说真的不是一个很好的用法)。尝试glDrawElements使用QUAD_LIST,甚至更好,TRIANGLE_LIST。您已经为此精心布置了数据。

于 2009-07-31T10:13:34.473 回答