- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在设置一个具有 4 个颜色附件和 1 个深度模板附件的多重采样帧缓冲区。它目前不完整,包含 GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE。如果我不附加渲染缓冲区,它就可以完美运行。调试输出未打印任何内容,glGetError() 未显示任何问题。
GLint samples;
glGetIntegerv(GL_MAX_SAMPLES, &samples);
const GLuint target = GL_TEXTURE_2D_MULTISAMPLE;
const GLenum format[TEXTURES_PER_FBO] = {
GL_RGBA32F, GL_RGB32F, GL_RGB32F, GL_R8UI // TODO tune these
};
// create render textures
glGenTextures(NUM_TEXTURES, textures);
for (int i = 0; i < NUM_TEXTURES; i++) {
glActiveTexture(GL_TEXTURE0 + i);
glBindTexture(target, textures[i]);
const int index = i % TEXTURES_PER_FBO;
glTexStorage2DMultisample(target, samples, format[index], width, height, false);
}
glGenRenderbuffers(1, &depth);
glBindRenderbuffer(GL_RENDERBUFFER, depth);
glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH24_STENCIL8, width, height);
// create first framebuffer with depth attachment
glGenFramebuffers(NUM_FBOS, fbos);
glBindFramebuffer(GL_FRAMEBUFFER, fbos[0]);
for (int i = 0; i < TEXTURES_PER_FBO; i++) {
const GLenum index = GL_COLOR_ATTACHMENT0 + i;
glFramebufferTexture2D(GL_FRAMEBUFFER, index, target, textures[i], 0);
}
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depth);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
“状态”是 GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
我已经在 Windows 上的 gtx 980 和 480 上对其进行了测试。我目前无法访问其他人,但如果未解决,我会尝试获取一些。如果您需要更多上下文代码,可以找到 here谢谢!
最佳答案
如果您还有渲染缓冲区附件,则需要为 glTexStorage2DMultisample()
的 fixedsamplelocations(最后一个)参数传递 GL_TRUE
。否则,您将得到您观察到的 GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
错误。
来自规范中可能的 glCheckFramebufferStatus()
结果列表(例如 OpenGL 4.5 规范的第 311 页,“9.4.2 整体帧缓冲区完整性”部分):
The value of TEXTURE_FIXED_SAMPLE_LOCATIONS is the same for all attached textures; and, if the attached images are a mix of renderbuffers and textures, the value of TEXTURE_FIXED_SAMPLE_LOCATIONS must be TRUE for all attached textures. {FRAMEBUFFER_INCOMPLETE_MULTISAMPLE}
因此您需要更改对此的调用以获得有效的 FBO 配置:
glTexStorage2DMultisample(target, samples, format[index], width, height, GL_TRUE);
关于c++ - Multisample framebuffer 仅与 renderbuffer 不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35735619/
我正在尝试了解 iPhone 操作系统上的 OpenGL 对象模型。我当前正在屏幕上渲染到几个不同的 UIView(基于 CAEAGLayer 构建)。我目前将其中每一个都使用单独的 EAGLCont
我正在调试应用程序的性能问题。深入研究似乎是一条线索:Ember.RenderBuffer.string()其中一个元素花费了 4 秒以上。当进一步深入代码时,它是函数setInnerHTMLWith
GLES 2.0 调用在 Android 和 iOS 上是同步的还是异步的?它什么时候会阻塞 CPU 等待 GPU 完成发送的命令?我相信 glReadPixels 和 glGetTexImage 肯
所以我使用 WebAudioAPI 从代码创建音乐。我使用 OfflineAudioContext 创建音乐,它的 oncomplete 事件与此类似: function(e) { var a
您好,我正在尝试使用 opengl 进行离屏渲染。我已经阅读了问题 How to render offscreen on OpenGL? 的答案.我像最佳答案一样设置了所有内容,但 opengl 不使
我正在设置一个具有 4 个颜色附件和 1 个深度模板附件的多重采样帧缓冲区。它目前不完整,包含 GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE。如果我不附加渲染缓冲区,它就
是这样的: 由于 usleep,drawGL 函数在帧的确切末尾被调用,如建议的那样。这已经保持稳定的帧率。 渲染缓冲区的实际呈现发生在 drawGL() 中。测量执行此操作所需的时间,给我波动的执行
我正在使用 OpenGL 并使用 GLPaint 的示例。我创建了一个应用程序,当用户触摸图像时,它会在图像(纹理)上应用旋转。我有一个问题,我需要保存第一次触摸,然后应用下一阶段等等。但在下一次触摸
当我设置 GLKViewController/GLKView 以使用 CoreImage 进行绘图时,有时会在标题中收到通知。 设置如下所示: _context = [[EAGLContext all
我正在开发一个使用 OpenGL 帧缓冲区/渲染缓冲区来徒手绘制线条的项目。这个应用程序使用 OpenGL ES 1.x,我不知道如何将当前屏幕转储为 PNG 或 JPG 图像。 感谢您阅读此问题。
我必须在 OpenGL 中渲染屏幕外,然后将图像传递给 QImage。另外,为了练习,我想将深度和模板缓冲区也传输到 CPU。 为了在屏幕外绘制,我使用了带有渲染缓冲区的帧缓冲区对象(而不是纹理,因为
平台是iPhone OpenGL ES 2.0 框架已经创建了一个带有渲染缓冲区的主fbo,因为它是颜色附件。 我有自己的 fbo ,其中 texture2D 作为颜色附件。我想将主 fbo 的内容复
使用默认的 cocos2d-swift 应用程序,我在我的 iPad Mini 2 上收到错误 EXC_BAD_ACCESS: BOOL rb_status = [_context renderbuf
我是一名优秀的程序员,十分优秀!