gpt4 book ai didi

c++ - 如何在 OpenGl 中使用橡皮筋

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:30 24 4
gpt4 key购买 nike

我正试图找到一种在 OpenGL 和 Visual Studio C++ 中使用橡皮筋的方法。我遇到的问题是某些 Win 7 计算机(即我老板的计算机)不允许我读取或绘制到前台缓冲区,从而导致无法直接绘制。

glDrawBuffer( GL_FRONT );
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp( GL_XOR );
glPolygonMode(GL_FRONT, GL_LINE);
glRecti(X0, Y0, X1, Y1);
X1 = X;
Y1 = Y;
glRecti(X0, Y0, X1, Y1);
*//Doesn't draw lines*

或者将前台缓冲区复制到后台缓冲区(重新绘制到它需要很长时间)调用 swapbuffers 绘图然后交换 agian

glReadBuffer( GL_FRONT );
glDrawBuffer( GL_BACK );
glCopyPixels(0, 0, Width, Height, GL_COLOR);

glEnable(GL_COLOR_LOGIC_OP);
glLogicOp( GL_XOR );
glPolygonMode(GL_BACK, GL_LINE);
SwapBuffers(hdc);
glRecti(X0, Y0, X1, Y1);
X1 = X;
Y1 = Y;
glRecti(X0, Y0, X1, Y1);
SwapBuffers(hdc);
*//Doesn't display original drawing*

有什么想法吗?

最佳答案

我会这样做:

  • 将场景绘制到屏幕外缓冲区(后台缓冲区或其他缓冲区)
  • 使用 glReadPixels 将图像读入主存
  • 将主存中的图像制作成纹理

在此之后,要在屏幕上绘制图像,您只需绘制一个覆盖整个渲染区域的四边形,并使用创建的纹理进行纹理化。这样,在将图像绘制到屏幕上时就无需重新渲染实际场景。

现代 OpenGL 实现也可以渲染到纹理,无需将图像移至主内存并返回。话又说回来,如果渲染场景已经很慢,这里的性能差异将不会很明显。

关于c++ - 如何在 OpenGl 中使用橡皮筋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848539/

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