You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SFML双窗口共享OpenGL上下文仅单窗口显示三角形问题求助

SFML共享OpenGL上下文多窗口渲染异常问题解决

问题现象

使用SFML创建两个共享OpenGL上下文的窗口时,仅其中一个窗口能显示三角形,另一个仅显示纯色背景。三角形的显示窗口完全由window.setActive(true)的调用对象决定——切换激活的窗口后,三角形会随之切换到新激活的窗口显示。

问题原因

VAO(顶点数组对象)属于OpenGL上下文的不可共享资源,即使多个窗口共享同一上下文的其他资源(如VBO、着色器程序),每个窗口也需要拥有独立的VAO实例。原代码中仅在一个窗口的上下文中创建了VAO,其他窗口的上下文无法复用这个VAO,导致无法正确渲染图形。

解决方案

为每个窗口单独创建并配置专属的VAO:

  • 对每个窗口,先调用windowX.setActive(true)激活其对应的OpenGL上下文
  • 在激活的上下文中,创建新的VAO对象,完成绑定VBO、设置顶点属性指针等初始化操作
  • 渲染阶段,激活目标窗口的上下文后,绑定该窗口对应的VAO,再执行glDraw*绘制命令

内容的提问来源于stack exchange,提问作者Nandu Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:34:51