私のシーンでは、球の中に立方体があります。球に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)
最初の例でandを使用するとglCullFace(GL_BACK)
、次のようになりますが、球の背面がまったく見えないため、まだ正しくありません。