我正在尝试创建一个使用 OpenGL 的 .NET 应用程序。我需要有 4 个视口,但不是创建 4 个控件并同步它们,而是将 1 个控件拆分为 4 个视口。我想在 OpenGL 控件上绘制线条以直观地分割视口。我正在使用自定义控件,为了实现这一点,我在基本 UserControl 顶部有两个面板。中间的 Panel 是 OpenGL 面板,这里渲染了 OpenGL 的输出。顶部的面板是我要绘制视口分隔线的地方,它具有透明度,因此我可以看到它下方的面板。
问题是,当 OpenGL 视口加载时(它在一个单独的线程中,所以它只是黑了几秒钟),它覆盖了整个 UserControl,不管它的 z 层。如果我缩小 OpenGL 面板,我可以看到它仍然只在面板上绘制,但它并不关心它上面的内容——它只是将其覆盖。
为什么会这样?如果您想了解我是如何创建 OpenGL 上下文等的,您可以查看我遵循的教程。我正在传递面板的句柄,而不是用户控件的句柄。cusstrom 控件中的所有控件是否共享相同的设备上下文或其他内容?