我正在使用Haskell制作一个非常简单的OpenGL应用程序,目前只需要让一些多边形出现。我的主要函数如下:
main :: IO ()
main = do
(pname, _) <- getArgsAndInitialize
createWindow $ "Haskellisa"
initialDisplayMode $= [RGBAMode, WithAlphaComponent]
displayCallback $= display
mainLoop
我的“display”函数绘制了一些三角形,并使用具有随机生成的0.0到1.0之间的
GLfloats
RGBA值的Color4设置颜色。所有东西都能够正常工作,但是没有透明度,重叠的多边形不会混合它们的颜色。我正在使用这个函数绘制三角形:
drawTri :: Tri Float -> Color4 GLfloat -> IO ()
drawTri ((x1,y1), (x2,y2), (x3,y3)) col = do
renderPrimitive Triangles $ do
color col
vertex $ (Vertex3 (x1 :: GLfloat) (y1 :: GLfloat) 0)
vertex $ (Vertex3 (x2 :: GLfloat) (y2 :: GLfloat) 0)
vertex $ (Vertex3 (x3 :: GLfloat) (y3 :: GLfloat) 0)
为什么这里的透明度没有生效?
WithAlphaComponent
是否启用了GL_BLEND
? - Luke B.