gpt4 book ai didi

opengl - Haskell OpenGL : Transparency not working

转载 作者:行者123 更新时间:2023-12-04 23:25:00 26 4
gpt4 key购买 nike

我正在用 Haskell 制作一个非常简单的 OpenGL 应用程序,现在只是制作一些多边形。我的主要功能如下所示:

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)

为什么我的透明度在这里不起作用?

最佳答案

我假设 [RGBAMode, WithAlphaComponent]只是设置位深度

我不确定它是如何在 Haskell 中完成的,但您必须调用 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);glEnable( GL_BLEND ); .您还必须将透明面从后向前绘制。

更多关于这里:http://www.opengl.org/wiki/Transparency_Sorting

关于opengl - Haskell OpenGL : Transparency not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com