我正在编写一个简单的赛车游戏。在尝试通过绘制黑色透明多边形在我的场景中添加阴影时,我发现自己陷入了一个奇怪的问题。
当在水平表面上绘制阴影时,当我从远处看它们时,我可以透过表面看到它们好像是透明的。
void PolyShadow::Draw(){
glColor4f(0,0,0,0.5f);
glEnable (GL_BLEND);
glBlendFunc (GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA);
this->drawShadow();
glDisable (GL_BLEND);
shadow_initialized = true;
}
为了避免冲突,我为任何投影阴影的对象分配了不同的 shadow_offset 并在绘制阴影之前进行此调用
glEnable(GL_POLYGON_OFFSET_FILL);
//call to object.drawShadows()
glDisable(GL_POLYGON_OFFSET_FILL);
和
void Object::drawShadows(){
glPolygonOffset(-1.0-shadow_offset,-1.0-shadow_offset);
//Draw shadow
}
我也试过
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
但没有任何改变。
提前致谢