没有glFog,我的透明png显示效果很好,但有了它,你可以看到矩形背景和其他颜色的条带(注意其他污垢材料按预期工作,但不使用png或透明度)。
alt text http://img203.imageshack.us/img203/4466/screenshot20100509at528.png alt text http://img69.imageshack.us/img69/3131/screenshot20100509at456.png
这是我的雾代码:
GLfloat colour[4]={0.8f,0.8f,1.0f, 1.0f};
glFogi(GL_FOG_MODE, GL_EXP);
glFogfv(GL_FOG_COLOR, colour);
glFogf(GL_FOG_DENSITY, 0.1);
glHint(GL_FOG_HINT, GL_NICEST);
glFogf(GL_FOG_START, 1.0);
glFogf(GL_FOG_END, 5.0);
glEnable(GL_FOG);
glClearColor(0.8f,0.8f,1.0f,1.0f);
我的png代码:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GLfloat myAmbient[] = {0.7,0.7,0.7,1.0};
glMaterialfv(GL_FRONT, GL_AMBIENT, myAmbient);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, plantTexture);
glColor3f(0.5,0.5,0.2);
glPushMatrix();
glTranslated(-1,-14,10);
glScaled(10,10,10);
glBegin(GL_QUADS);
glNormal3f(0,0,1);
glTexCoord2f(0,1); glVertex2i(1,0);
glNormal3f(0,0,1);
glTexCoord2f(0,0); glVertex2i(1,1);
glNormal3f(0,0,1);
glTexCoord2f(1,0); glVertex2i(0,1);
glNormal3f(0,0,1);
glTexCoord2f(1,1); glVertex2i(0,0);
glEnd();
glPopMatrix();
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
我完全失去了这个。有什么想法吗?
答案 0 :(得分:1)
由于四边形是半透明的,因此在绘制之前应使用glDepthMask(false)禁用对深度缓冲区的写入(假设启用了GL_DEPTH_TEST)。