1

我正在处理与此非常相似的代码:

http://xcb.freedesktop.org/opengl/

当我使用默认的帧缓冲区配置时它工作正常,尽管当我尝试查询某个它失败时。我已经确定它在任何时候都会失败VISUAL_IDvisualID在示例代码中)并且screen->root_visual是不同的值。

这是错误消息:

X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  135 (GLX)
  Minor opcode of failed request:  31 (X_GLXCreateWindow)
  Resource id in failed request:  0x1600003
  Serial number of failed request:  32
  Current serial number in output stream:  34

我能做些什么来解决这个问题?

4

1 回答 1

2

最可能的事件是xcb_create_window()调用失败(使用xcb_create_window_checked()xcb_request_check()来验证)。它失败是因为COPY_FROM_PARENT被指定为深度,它与所需的视觉深度不匹配。

您应该查询您正在使用的视觉效果的深度,并将其传递给xcb_create_window().

更新如果您创建一个深度与其父级不同的窗口,您必须指定边框像素,可能还有背景像素和颜色图,请参见例如this question

于 2012-06-18T06:14:07.443 回答