gpt4 book ai didi

opengl - 单缓冲(GLUT_SINGLE)和双缓冲绘图(GLUT_DOUBLE)的区别

转载 作者:行者123 更新时间:2023-12-01 06:55:57 26 4
gpt4 key购买 nike

我正在使用 example here它在
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
但是当我将它设置为时它变成了一个透明窗口

glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);

但我需要该示例在 GLUT_DOUBLE 下使用一些绘图模式。

那么 GLUT_DOUBLE有什么区别?和 GLUT_SINGLE ?

最佳答案

使用时 GL_SINGLE ,您可以将您的代码绘图直接显示到显示器上。

使用时 GL_DOUBLE ,你可以想象有两个缓冲区。其中一个始终可见,另一个不可见。你总是渲染到缓冲区 不是 当前可见。渲染完帧后,交换两个缓冲区,使刚刚渲染的缓冲区可见。以前可见的现在不可见,您可以使用它来渲染下一帧。所以每帧两个缓冲区的作用是相反的。

实际上,底层实现在大多数现代系统上的工作方式略有不同。例如,某些平台在请求缓冲区交换时使用三重缓冲来防止阻塞。但这通常与您无关。关键是它行为 好像你有两个缓冲区。

除了在 glutInitDisplayMode() 的参数中指定不同的标志外,主要区别是, 是您在显示功能结束时进行的调用。这是用glutDisplayFunc()注册的函数, 即 DrawCube()在您链接的代码中。

  • 在单缓冲模式下,你在最后调用它:
    glFlush();
  • 在双缓冲模式下,您调用:
    glutSwapBuffers();

  • 所以你需要做的就是更换 glFlush()DrawCube()glutSwapBuffers()使用时 GLUT_DOUBLE .

    关于opengl - 单缓冲(GLUT_SINGLE)和双缓冲绘图(GLUT_DOUBLE)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298540/

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