在我的场景中,我在一个球体中有一个立方体。我想将 RGB 纹理应用于球体并使其半透明。我可以导入纹理,将其应用于球体并使其半透明,但我没有得到我想要的结果。
我的混合功能是glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)
我的绘制方法如下:
def DrawGLScene():
rotation1 = 60
rotation2 = 60
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glEnable(GL_BLEND)
glLoadIdentity()
glTranslatef(0.0, 0.0, -8.0)
glRotatef(rotation1, 1.0, 0.0, 0.0)
glRotatef(rotation2, 0.0, 1.0, 0.0)
glColor4f(1.0,1.0,1.0,1.0)
glutSolidCube(2);
glEnable(GL_COLOR_MATERIAL)
glEnable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D,1)
glColor4f(1.0,1.0,1.0,0.3)
Q=gluNewQuadric()
gluQuadricNormals(Q, GL_SMOOTH)
gluQuadricTexture(Q, GL_TRUE)
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP)
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP)
gluSphere(Q, 2.35, 32, 16)
glDisable(GL_TEXTURE_2D)
glutSwapBuffers()
结果如下所示:
似乎存在深度问题,因为我只能在右下角看到球体的背面。然后我设置 glDepthFunc(GL_LESS) 来绘制立方体和 glDepthFunc(GL_ALWAYS) 来绘制球体,结果是:
现在球体的背面通过立方体显示。
我已经为对象尝试了多种 glDepthFunc() 组合,但无济于事。问题与我如何处理深度、混合或其他问题有关吗?
编辑:
在第一个示例中使用glEnable(GL_CULL_FACE)
andglCullFace(GL_BACK)
给了我以下仍然不正确的信息,因为现在您根本看不到球体的背面。