我正在研究与此类似的代码:
http://xcb.freedesktop.org/opengl/
当我使用默认的帧缓冲配置时,它工作正常,但是当我尝试查询某个配置时,它失败了。我确定只要VISUAL_ID
(示例代码中的visualID
)和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
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
最有可能的事件是xcb_create_window()
调用失败(使用xcb_create_window_checked()
和xcb_request_check()
来验证)。它失败,因为COPY_FROM_PARENT
被指定为深度,它与所需的视觉深度不匹配。
您应该查询正在使用的视觉深度,并将其传递给xcb_create_window()
。
更新如果您创建的深度与其父级不同,则必须指定边框像素,可能还要指定背景像素和色彩映射,请参阅例如this question