【发布时间】:2014-03-17 14:33:10
【问题描述】:
我在 FLTK 的 opengl 实现中的 Fl_Gl_Window 中绘制了一些 3D 结构。这些图像被绘制和旋转,所以代码看起来像
glTranslatef(-xshift,-yshift,-zshift);
glRotatef(ang1,ang2,ang3);
glTranslatef(xshift,yshift,zshift);
glColor4f((120.0/256.0),(120.0/256.0),(120.0/256.0),0.2);
for (int side=0;side<num_sides;side++){
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
glBegin(GL_TRIANGLES);
//draw shape
glEnd();
glDisable(GL_BLEND);
}
它几乎可以在不同的角度工作,透明度不能正常工作。例如,如果我从一侧画一个立方体,它会一直看起来是透明的,无法辨别两侧,但从另一侧看,它会看起来更暗。就好像它在旋转之前计算透明度太“早”。难道我做错了什么?我应该将旋转移动到透明效果下方(即在它们执行之前)还是三角形的顺序重要?
【问题讨论】:
标签: opengl transparency fltk