正在渲染opengl的随机屏幕片段-这表明啥错误?

Posted

技术标签:

【中文标题】正在渲染opengl的随机屏幕片段-这表明啥错误?【英文标题】:Random pieces of screen are being rendered opengl- what error does this indicate?正在渲染opengl的随机屏幕片段-这表明什么错误? 【发布时间】:2014-03-02 22:59:45 【问题描述】:

我正在使用 openGL(OSX Mavericks 上的 3.3),并且我的屏幕随机部分被渲染到我的窗口。我假设这可能是我做错了什么的明确证据……但是什么?缓冲区中有未初始化的值吗?我使用的是不是我创建的缓冲区吗?一些奇怪的内存管理东西?或者类似的东西?

对不起,如果这个问题有点含糊,我只是打赌这是 openGL 兽医会听到的错误之一,然后会说“当然!这意味着插入我做错的事情”。

这是一个屏幕截图,可以帮助您了解我在说什么:

黑色圆圈是我试图渲染的,颠倒的谷歌徽标是我不明白的。此外,每次我运行它时,我都会得到不同的随机纹理。

谢谢!我很乐意提供更多详细信息,我只是不知道要包括哪些其他相关信息...

【问题讨论】:

听起来您没有正确清除颜色缓冲区。另外,您的像素格式设置如何(例如单缓冲或双缓冲,任何 alpha 位)? 哦天哪。万分感谢!我正在清除默认缓冲区的颜色/深度位,然后渲染到纹理,然后在不清除该帧缓冲区的颜色/深度的情况下显示该纹理。再次感谢! @Andon/Phildo:您应该将其发布为答案;) @KromStern - 有没有办法做到这一点,同时给予 andon 荣誉? @Phildo:他没有发布它,所以我认为他只是乐于助人而不付出太多努力就可以了。毕竟这些声望点都是虚拟的。 【参考方案1】:

感谢@Andon M. Coleman(在上面的 cmets 中),我意识到这仅仅是我没有正确清除颜色缓冲区的结果。

具体来说,我的管道涉及渲染到纹理,然后将该纹理传送到屏幕。我正确清除了 SCREENS 颜色缓冲区,但我从未清除过中间 FB 的颜色缓冲区。

【讨论】:

以上是关于正在渲染opengl的随机屏幕片段-这表明啥错误?的主要内容,如果未能解决你的问题,请参考以下文章

Opengl渲染到深度纹理 - 红色?

为啥精灵不在 OpenGL 中渲染?

OpenGL 加载和渲染 png 到屏幕

我应该在 nvidia 显卡上使用啥 opengl 库

更快的全屏渲染(OpenGL/glsl)?

用于片段着色器的 OpenGL GLSL 绑定采样器