【问题标题】:Creating an OpenGL texture with alpha using NSBitmapImageRep使用 NSBitmapImageRep 创建带有 alpha 的 OpenGL 纹理
【发布时间】:2011-08-03 09:31:12
【问题描述】:

我正在使用以下方式加载 PNG:

theImage = [NSBitmapImageRep imageRepWithContentsOfFile:imagePath];

从中我可以成功创建 gl 纹理并正确渲染而没有任何透明度。但是,当我打开混合使用时:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);

纹理以正确的透明背景渲染,但图像颜色不正确。

我尝试了混合功能中的几个选项,GL_SRC_ALPHAGL_ONE_MINUS_SRC_ALPHAGL_ONEGL_DST_ALPHA等。

我被教导也许我需要重新排序图像数据中的位,也许通道已经混淆了,但在这种情况下,当混合关闭时,我不希望它能够正确渲染。

或者,我想我可以使用 libPNG,但如果可能的话,我想尝试使用 NSBitmapImageRep

【问题讨论】:

    标签: opengl transparency alpha nsbitmapimagerep glblendfunc


    【解决方案1】:

    提供截图怎么样?


    无论如何,对于简单的透明度通道混合,您的混合功能都是错误的。应该是

    • 正常阿尔法:glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

    • 预乘 alpha:glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)

    【讨论】:

    • 钉子,头部,命中,,,我的混合函数是错误的,但这修复了它。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多