【发布时间】:2012-12-22 16:56:29
【问题描述】:
我正在使用 Haskell 制作一个非常简单的 OpenGL 应用程序,现在只是制作了一些多边形。我的主要功能如下所示:
main :: IO ()
main = do
(pname, _) <- getArgsAndInitialize
createWindow $ "Haskellisa"
initialDisplayMode $= [RGBAMode, WithAlphaComponent]
displayCallback $= display
mainLoop
我的“显示”函数绘制了一些三角形并使用 Color4 设置颜色,该 Color4 具有随机生成的 RGBA 值,GLfloats 介于 0.0 和 1.0 之间。一切正常,但没有透明度,重叠的多边形不会混合它们的颜色。
我正在使用这个函数绘制三角形:
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)
为什么我的透明度在这里不起作用?
【问题讨论】:
-
什么是深度缓冲区比较?如果您拒绝具有相等 Z 的像素,并且它们都处于相同的深度,则不会渲染重叠的像素。
-
WithAlphaComponent启用GL_BLEND?
标签: opengl haskell transparency rgba