gpt4 book ai didi

c++ - 在 C++.NET 中使用 OpenGL 并在视口(viewport)上绘制

转载 作者:行者123 更新时间:2023-11-30 03:00:31 24 4
gpt4 key购买 nike

我正在尝试创建一个使用 OpenGL 的 .NET 应用程序。我需要 4 个视口(viewport),但不是创建 4 个控件并同步它们,而是将 1 个控件分成 4 个视口(viewport)。我想在 OpenGL 控件上绘制线条以在视觉上分割视口(viewport)。我正在使用自定义控件,为了实现这一点,我在基本 UserControl 之上有两个面板。中间的面板是 OpenGL 面板,其中渲染 OpenGL 输出。顶部的面板是我要绘制视口(viewport)分隔线的地方,它是透明的,所以我可以看到它下面的面板。

问题是,当 OpenGL 视口(viewport)加载时(它在一个单独的线程中,所以它只是黑色几秒钟),它覆盖了整个 UserControl,而不管它的 z 层。如果我缩小 OpenGL 面板,我可以看到它仍然只在面板上绘制,但它根本不关心上面的内容——它只是将其覆盖。

为什么会这样?如果您想了解我如何创建 OpenGL 上下文等,you can see the tutorial I followed .我正在传递面板的句柄,而不是 UserControl 的句柄。自定义控件中的所有控件是否共享相同的设备上下文或其他内容?

最佳答案

结合使用 glViewportglScissor 并启用 GL_SCISSOR_TEST 将您的窗口拆分为多个视口(viewport)。使用 OpenGL 本身绘制视口(viewport)分离器。您可以随时更改使用的投影。因此,对于拆分器,让视口(viewport)覆盖整个窗口,绘制拆分器,然后将视口(viewport)限制在 Pane 内,并使用剪刀防止东西“泄漏”到它外面。

关于c++ - 在 C++.NET 中使用 OpenGL 并在视口(viewport)上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11962368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com