cocoa OpenGL : draw texture and round corners

标签 cocoa opengl textures rounded-corners nsopenglview

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

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

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

当我这样做时(使用glTexCoord2fglVertex2f),纹理被绘制到角落,因此图像被绘制到圆角之外,并且我松开了圆角我的 window 的侧面。

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

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

最佳答案

您可以将纹理应用于具有圆角的几何体,在具有圆角的影片纹理上使用额外的 Alpha mask ,或者使用模板测试来圆化视口(viewport)的角。

关于 cocoa OpenGL : draw texture and round corners,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685467/

相关文章:

objective-c - 如何阻止 HIToolbox 捕获我的异常?

cocoa - 以编程方式在 WebView 中打开链接

objective-c - 通过许多不同的 GCD 队列访问硬盘是否安全?

directx - HLSL 中的纹理采样器不进行插值

c++ - OGRE 异常(7:InternalErrorException):在 FreeImageCodec::decode 中解码图像时出错

iphone - 我应该使用 C 函数还是 Obj-C 方法?

opengl - 哪个 OpenGL 版本默认与 MinGW 一起安装?

opengl - 顶点缓冲区绑定(bind)索引和统一缓冲区绑定(bind)点?

java - lwjgl 3、如何获取当前线程中的OpenGL上下文?

java - OpenGL ES 2.0 中的立方体不绘制给定的纹理