Я делаю очень простое приложение OpenGL с Haskell, в данный момент просто заставляю несколько полигонов появляться. Моя основная функция выглядит так:
main :: IO ()
main = do
(pname, _) <- getArgsAndInitialize
createWindow $ "Haskellisa"
initialDisplayMode $= [RGBAMode, WithAlphaComponent]
displayCallback $= display
mainLoop
моя функция «отображение» рисует несколько треугольников и устанавливает цвета, используя 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)
Почему моя прозрачность здесь не работает?
WithAlphaComponent
включаетGL_BLEND
? - person Luke B.   schedule 08.01.2013