macos – 在OpenGL视图的前面创建一个控件

我在Mac上有一个OpenGL视图.我想在它前面放一个NSTextField,但即使我把它放在前面,它也会被视图遮挡.

有一个非常简单的测试用例.在XCode中创建一个新项目(我正在使用4.0.2)和一个窗口.添加OpenGL视图.现在添加一个文本字段并进行设置,使其中一半与OpenGL视图重叠.运行程序.整个字段显示,但是当您键入文本时,无论您如何从前到后排列字段,其中只有一半显示.

最佳答案 NSOpenGLView实际上并不在窗口内绘制,它默认在窗口上方或下方的表面中绘制.如果要在OpenGL曲面前面设置控件,则必须使用NSOpenGLContext参数NSOpenGLCPSurfaceOrder在窗口下方创建曲面.但是你必须在窗口中剪切一个透明矩形才能看到OpenGL表面.

编辑添加:或者,您可以创建一个透明的叠加层或子窗口,它位于OpenGL曲面和主窗口之上,并将控件放在那里.不确定哪种方式会更容易.

点赞