Cocoa OpengL:绘制纹理和圆角

时间:2011-10-07 09:37:18

标签: cocoa opengl textures rounded-corners nsopenglview

如果我使用标准NSWindow来托管所有窗框的NSOpenGLView,则窗口的两个底角会自动舍入。

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

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

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

当窗口是标准窗口时,系统会执行什么操作? NSBorderlessWindowMask我似乎无法再现这些窗口?

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

1 个答案:

答案 0 :(得分:1)

您可以将纹理应用于具有圆角的几何体,在带有圆角的影片纹理上使用其他Alpha蒙版,或使用模板测试来圆化视口的角落。