gpt4 book ai didi

c++ - glCopyPixels() 没有返回选定的缓冲区像素

转载 作者:行者123 更新时间:2023-12-03 07:22:33 29 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

1年前关闭。




Improve this question




我正在尝试将前缓冲区复制到后缓冲区,并且我需要将后缓冲区复制到 aux0 或 aux1 缓冲区,但我无法让它工作。我得到的只是一个空白拷贝,而不是像素。我在交换缓冲区后立即执行此操作: SwapBuffers(glDeviceContext);
这是将像素放入另一个缓冲区的代码:

GLint m_viewport[4];
glGetIntegerv(GL_VIEWPORT, m_viewport);
glReadBuffer(GL_FRONT);
glDrawBuffer(GL_BACK);
glCopyPixels(0, 0, m_viewport[2], m_viewport[3], GL_COLOR);
我已经检查过:
glGetError()) != GL_NO_ERROR
到目前为止没有错误。但结果是空白。如果我只是在 SwapBuffers(glDeviceContext) 之后再次绘制到后台缓冲区,我会得到想要的结果,但这意味着我必须绘制两次。我还希望能够将整个缓冲区复制到系统菜单的 AUX 缓冲区中,这样我就有了整个事情的背景。
这是一个简短的测试代码:
    GLint m_viewport[4];
glGetIntegerv(GL_VIEWPORT, m_viewport);
glReadBuffer(GL_BACK);
glDrawBuffer(GL_AUX2);
glCopyPixels(0, 0, m_viewport[2], m_viewport[3], GL_COLOR);
SwapBuffers(glDeviceContext);
glReadBuffer(GL_AUX2);
glDrawBuffer(GL_BACK);
glCopyPixels(0, 0, m_viewport[2], m_viewport[3], GL_COLOR);
SwapBuffers(glDeviceContext);

最佳答案

而不是使用 glCopyPixels我推荐使用帧缓冲对象并使用 glBlitFrameBuffer或将纹理四边形绘制到后缓冲区,而不是将前缓冲区复制到后缓冲区。通常,您应该将前缓冲区和后缓冲区都视为不可靠的,因为内容可能随时损坏。本质上,如果窗口中的像素未通过像素所有权测试,则该位置的前缓冲区和后缓冲区都将被丢弃。

关于c++ - glCopyPixels() 没有返回选定的缓冲区像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64668597/

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