Cocoa OpengGL:绘制纹理和圆角

Cocoa OpengGL:绘制纹理和圆角,cocoa,opengl,textures,rounded-corners,nsopenglview,Cocoa,Opengl,Textures,Rounded Corners,Nsopenglview,如果我使用标准的NSWindow来承载扩展到所有窗框的NSOpenGLView,则窗口的两个底角将自动圆角 当切换到NSBorderlessWindowMask时,我必须自己处理圆角。 我已经实现了一个透明的自定义NSWindow和一个圆形的自定义NSView,它们都工作得很好。 之后,我通过将NSOpenGLCPSurfaceOpacity设置为0,实现了一个透明的NSOpenGLContext。 如果我为OpenGL上下文设置了颜色背景,视图将正确绘制,并获得所需的圆角 但是,由于该应用程序

如果我使用标准的
NSWindow
来承载扩展到所有窗框的
NSOpenGLView
,则窗口的两个底角将自动圆角

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

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

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

当窗口为标准窗口且非
NSBorderlessWindowMask
无法复制时,系统会做什么


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

您可以将纹理应用到具有圆角的几何体,在具有圆角的电影纹理上使用附加的alpha遮罩,或者使用模具测试来圆角视口的角。

您可以将纹理应用于具有圆角的几何体,在具有圆角的电影纹理上使用附加的alpha遮罩,或者使用模具测试来圆角视口的角。

您有这些解决方案之一的示例吗?因为我对编程非常陌生,尤其是OpenGL,我不知道如何实现你的建议我已经弄明白了。我使用了一个额外的阿尔法面具。非常感谢你的帮助!你有这些解决方案之一的样品吗?因为我对编程非常陌生,尤其是OpenGL,我不知道如何实现你的建议我已经弄明白了。我使用了一个额外的阿尔法面具。非常感谢你的帮助!