【问题标题】:Cocoa OpengGL: draw texture and round cornersCocoa OpengL:绘制纹理和圆角
【发布时间】:2011-10-07 09:37:18
【问题描述】:

如果我使用标准的NSWindow 来承载延伸到所有窗框的NSOpenGLView,则窗口的两个底角会自动变圆。

当切换到NSBorderlessWindowMask 时,我必须自己处理圆角。 我已经实现了一个透明的自定义NSWindow 和一个圆形的自定义NSView,它们都可以正常工作。 之后,我通过将 NSOpenGLCPSurfaceOpacity 设置为 0 来实现透明的 NSOpenGLContext。 如果我为 OpenGL 上下文设置颜色背景,则正确绘制视图并获得所需的圆角。

但是,由于该应用是一个电影播放器​​,我需要绘制对应于每个电影帧的纹理。

当我这样做(使用glTexCoord2fglVertex2f)时,纹理被绘制到角落,因此图像被绘制到圆角之外,我松开了窗口的圆形外观。

当窗口是标准的并且我似乎无法重现的 NSBorderlessWindowMask 时,系统会做什么?

在将纹理绘制到帧缓冲区时圆角的最佳方法是什么?

【问题讨论】:

    标签: cocoa opengl textures rounded-corners nsopenglview


    【解决方案1】:

    您可以将纹理应用到具有圆角的几何体,在具有圆角的电影纹理上使用额外的 Alpha 蒙版,或者使用模板测试来圆角视口的角。

    【讨论】:

    • 您有这些解决方案的样品吗?因为我对编程非常陌生,尤其是 OpenGL,而且我实际上并不知道如何实现您的建议
    • 我已经想通了。我使用了一个额外的 alpha 蒙版。非常感谢您的帮助!
    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多