gpt4 book ai didi

c - 如何使用单个 OpenGL 上下文渲染到多个窗口?

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:26 31 4
gpt4 key购买 nike

我使用 GLFW 创建了两个窗口。第一个窗口有一个 OpenGL 上下文,第二个没有。我想要做的是使用单个 OpenGL 上下文将相同的场景渲染到两个窗口。像这样。

glBindVertexArray(vaoId);

// ... tell OpenGL to draw on first window

glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(...);

// ... swap first window buffers

// ... tell OpenGL to draw on second window

glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(...);

// ... swap second window buffers

glBindVertexArray(0);

问题是我不知道如何告诉 OpenGL 在特定窗口上绘制。而且我也不知道如何为特定窗口交换缓冲区。如果有必要,我可以使用 Win32 API。

最佳答案

据我所知,GLFW 在它的 API 中并不直接支持它。它一般将一个Window和一个GL context视为一个单元。但是,使用 native API,您可以做您想做的事。对于 windows 32,请查看 wglMakeCurrent() .在 GLFW 中,您可以通过 GLFW's native access API 获取所需的上下文和窗口句柄。 .请注意,那样你只会得到一个 HWND,你将不得不手动使用 GetDC()获取窗口的设备上下文。

请注意,切换上下文意味着刷新 GL 命令队列,这会对性能产生负面影响。参见 GL_KHR_context_flush_control了解更多详情。

关于c - 如何使用单个 OpenGL 上下文渲染到多个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50436390/

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