- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 openGL-ES3,在 Xcode 7.3 的 iPhone5s(硬件,而不是模拟器)上运行,我在执行 glClear 时收到“无效的帧缓冲区操作”。
有问题的纹理是我的 GBuffer 的“最终”纹理,很像本教程中的 http://ogldev.atspace.co.uk/www/tutorial37/tutorial37.html .主要区别在于,由于 ES3 的限制,我请求 sRGB 纹理并且我使用 GL_COLOR_ATTACHMENT3(而不是 4)。
glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB8, WindowWidth, WindowHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
// glTexParameteri ...
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT3, GL_TEXTURE_2D, m_finalTexture, 0);
GLenum Status = glCheckFramebufferStatus(GL_FRAMEBUFFER); // No errors here
现在当我尝试清除它时,我得到一个“无效的帧缓冲区操作”
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_fbo);
// Element at index**[i]** needs to match GL_COLOR_ATTACHMENT**i** on GL-ES3!
GLenum drawbuf[4] = { GL_NONE, GL_NONE, GL_NONE, GL_COLOR_ATTACHMENT3 };
glDrawBuffers(sizeof(drawbuf)/sizeof(drawbuf[0]), drawbuf);
GLCheckError(); // no errors
glClear(GL_COLOR_BUFFER_BIT);
GLCheckError(); // => glGetError 506 GL_INVALID_FRAMEBUFFER_OPERATION
现在,如果我改为像这样初始化纹理(因此没有 sRGB),OpenGL 不会给出清晰的错误:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, WindowWidth, WindowHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
据我了解,OpenGL ES3 支持 sRGB ...那么为什么 glClear 会失败?有什么想法吗?
最佳答案
GL_SRGB8
不是 ES 3.0 中的颜色可渲染格式。在规范文档中:
SRGB8
列在“仅纹理颜色格式”下。SRGB8
在“Color-renderable”列中没有复选标记。这也匹配 EXT_srgb扩展规范,在“问题”下:
Do we require SRGB8_EXT be supported for RenderbufferStorage?
No. Some hardware would need to pad this out to RGBA and instead of adding that unknown for application developers we will simply not support that format in this extension.
glCheckFramebufferStatus()
在这种情况下应该返回 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
。如果它没有这样做,那看起来像是 OpenGL 实现中的错误。
最接近的颜色可渲染替代方案是 GL_SRGB8_ALPHA8
。
关于ios - glClear 上的 "invalid framebuffer operation"- 在 OpenGL ES3 中使用 sRGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38962338/
Apple's Technical Q&A on addressing flickering (QA1650)包括以下段落。 (强调我的。) 您必须为屏幕上的每个像素提供一种颜色。在绘图代码开始时,最
我在 iPhone openGL ES 项目中使用多重采样。仅使用 glClear 命令即可使渲染器利用率上升至近 42%。这是应该的方式还是我做错了什么?我使用 iPod Touch 第 4 代进行
出于某种原因,我正在尝试创建一个旋转的立方体 bur,我在 OpenGL 中清除屏幕时遇到了问题。我将 OpenGL 与 SDL2 一起使用来创建窗口并将内容渲染到窗口,但我不确定为什么它不起作用。
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我看到了不同的意见。 目前,我只关心颜色数据。 在 Chapter 28. Graphics Pipeline Performance , 它说: Avoid extraneous color-buf
每次打电话后glClear(GL_COLOR_BUFFER_BIT); ,我收到 OpenGL 错误“无效的帧缓冲区操作”。 通话似乎工作得很好,似乎没有任何问题。我打电话glClear(GL_COL
方法Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);花费了太多时间,大约15ms 这是代码示例: long now = System.currentTimeMilli
我被难住了。我在已配置为 openGL 小部件的 QT 4.6 应用程序的主窗口内有一个小部件。它画得很好,除了我无法清除帧之间的背景。当他的窗口打开时我得到一个黑色背景并且之后它永远不会清除,所以随
假设在下面的代码之前绘制了一些东西,下面的代码应该做什么? glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); glClearColor(0.0,
这是我编写的一个简单的 opengl 程序。我试图在绘制三角形之前清除屏幕。我在我的 init() 函数中调用了 glClear(),但是,它似乎无法清除屏幕。 #include #include
在使用Opengl绘制场景图时,我看到总是有一个glClear(GL_DEPTH_BUFFER_BIT),这是做什么用的? 最佳答案 它清除深度缓冲区。深度缓冲区是帧缓冲区的一部分,它使图元被前面的其
在 Khronos OpenGL 2.1 Specs 中,他们说 glStencilMask 应该影响 glClear 的操作,但是,在我的机器上,这似乎不是真的。 我目前得到的输出是: Stenci
我有一个简单的 GLKViewController ,我将屏幕设置为白色: - (void)viewDidLoad { [super viewDidLoad]; self.contex
我正在尝试学习 OpenGL。我将 Clion 用作 IDE,它使用 CMakeLists.txt 文件来组织/编译项目。 由于某种原因,编译器找不到 glClear: Undefined symbo
我想深入了解 glClear 函数。我理解它的一般解释 -> 清除颜色、深度、模板和累积的缓冲区,但我还有其他问题。我的 friend 假设你清除了内存中代表颜色、深度、模板和累积的位(堆栈?)。通过
我最近从 https://github.com/fogleman/Craft 下载了 fogleman 出色的“Minecraft in 500 lines”演示.我使用了 2to3 工具并手动更正了
我想删除 glClear,这样我就可以为一个对象设置动画,当它在屏幕上移动时,它会显示动画图像,而如果我包含 glClear,则不会显示该图像。它在模拟器上可以运行,但是当我把它放在手机上时,它就可以
问题 当 QPainter 在 glClear 之后创建时,后者无效。 描述 我使用 Qt 5.7.1。我在 Linux 上使用 gcc 和在 Windows 上使用 vc++ 得到相同的结果。 我在
我的应用程序的填充率约为 30fps。我知道 GLES20.glClear() 用于清除每次绘制的屏幕。如果我评论它,我得到大约 60fps 的 fps。但是输出并不像预期的那样。我有一个内容要在每一
我正在 http://LearnOpenGL.com 学习这些 OpenGL 教程我遇到了这个函数glClear(here 在渲染标题)。因为我还在学习英语,所以我在这个功能中遇到了“清晰”世界的麻烦
我是一名优秀的程序员,十分优秀!