1

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

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

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

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

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

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

4

1 回答 1

1

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

于 2011-10-07T09:45:27.000 回答