gpt4 book ai didi

c++ - 在 wxGLCanvas 上调整大小之前无法初始化着色器

转载 作者:行者123 更新时间:2023-11-30 04:16:23 25 4
gpt4 key购买 nike

wxGLCanvas 似乎讨厌 OpenGL 着色器,因为它不提供像 Qt 中那样的初始化回调函数;即使在构造函数中自己创建上下文后,我也无法创建着色器,如下所示:

m_context = new wxGLContext(this);

还试过:

SetCurrent(*m_current);

仍然没有运气,GLEW 不断抛出“缺少 GL 版本”,这表明上下文尚未创建(来自 Google)。

我试过:

  1. 使用 WX_EVT() 显示和激活事件,仍然没有成功。
  2. 在调整大小事件中初始化着色器,仍然没有运气。

有没有办法让wxGLCanvas先调用我的初始化函数?

最佳答案

在 wxWidgets 中,没有特定的方法来初始化 OpenGL,该方法在其他所有事情之前被调用,而是在窗口显示之后被调用。您可以使用指示 OpenGL 是否已初始化的成员变量自己滚动,如果该变量为假,则在 Paint 事件处理程序中进行初始化。

根据我的经验,仅在 Paint 事件处理程序中发出所有 OpenGL 命令是最安全的,因此在您的 Size 事件处理程序中,您应该保存新的视口(viewport)大小并更新 Paint 处理程序中的投影矩阵(或仅查询视口(viewport)使用 wxGLCanvas 的 GetClientRect() 方法调整大小)。

关于c++ - 在 wxGLCanvas 上调整大小之前无法初始化着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782108/

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