首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cairo + freeglut组合出错

cairo + freeglut组合出错
EN

Stack Overflow用户
提问于 2014-03-23 22:19:29
回答 1查看 324关注 0票数 1

我用这样的GL freeglut创建了一个上下文:

代码语言:javascript
复制
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_STENCIL);

用这样的cairo抽签:

代码语言:javascript
复制
  if (!device_)
  {
    device_ = cairo_glx_device_create(glXGetCurrentDisplay(),
      glXGetCurrentContext());
  }
  // else do nothing

  auto const surface(cairo_gl_surface_create_for_window(device_,
    glXGetCurrentDrawable(), width, height));

  auto const cr(cairo_create(surface));

  // draw using cairo calls

  cairo_destroy(cr);
  cairo_gl_surface_swapbuffers(surface); // !!!
  cairo_surface_destroy(surface);

如果我不调用cairo_gl_surface_swapbuffers(),而是调用glutSwapBuffers(),什么都不会显示,但是有一个错误:

代码语言:javascript
复制
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  156 (GLX)
  Minor opcode of failed request:  11 (X_GLXSwapBuffers)
  Serial number of failed request:  69
  Current serial number in output stream:  72

但是,如果我调用cairo_gl_surface_swapbuffers(),但不调用glutSwapBuffers(),则绘图将显示,并且不会出现错误。我如何调用glutSwapBuffers()而不是cairo_gl_surface_swapbuffers()而不触发错误?我想把其他内容和cairo内容混在一起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-24 08:18:45

函数cairo_gl_surface_swapbuffers应该等效于调用cairo_surface_flush,然后调用用于交换缓冲区的正确函数。

所以我想你是在找cairo_surface_flush(surface)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22597885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档