- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我还是 opengl3 的新手,我正在尝试创建多 channel 渲染。
为此,我创建了 FBO,生成了多个纹理并使用
unsigned index_col = 0;
for (index_col = 0; index_col < nbr_textures; ++index_col)
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + index_col, texture_colors[index_col], 0);
效果很好(我努力相信我在这里做得很好!)。
我的理解问题发生在之后,当我尝试在屏幕外渲染第一个纹理,然后在第二个纹理中渲染,然后在屏幕上渲染时。
要渲染到特定纹理,我正在使用:
FBO.bind();
glDrawBuffer(GL_COLOR_ATTACHMENT0);
glBindTexture(GL_TEXTURE_2D, FBO.getColorTextures(0)); //getColorTextures(0) is texture_colors[0]
然后我使用我的着色器绘制,之后我想做的是:
glDrawBuffer(GL_COLOR_ATTACHMENT1);
glBindTexture(GL_TEXTURE_2D, FBO.getColorTextures(1));
毕竟
glBindFramebuffer(GL_FRAMEBUFFER, 0);
RenderToScreen(); // assuming this function render to screen with a quad
我的问题是:glDrawBuffer
和 glBindTexture
有什么区别?有必要同时调用吗?纹理不是附加到缓冲区吗? (实际上我无法对其进行测试,因为我正在努力让它发挥作用...)
谢谢!
最佳答案
glBindTexture
将纹理与纹理采样器单元连接起来以供读取。 glDrawBuffer
选择绘图写入的目的地。如果要选择纹理作为渲染目标,请在纹理所附加的颜色附件上使用 glDrawBuffer
; 并确保当前绑定(bind)的纹理采样器单元均未用作着色器输入!创建反馈循环的结果是未定义的。
关于c++ - OpenGL glDrawBuffer 和 glBindTexture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42924362/
当我遇到这两种方法时,我正在阅读红皮书 OpenGL 编程指南,这让我觉得没有必要,因为我们已经可以使用 layout (location = )< 指定输出将转到哪个颜色缓冲区 或 glBindFr
OpenGL 函数 glDrawBuffers(GLsizei n, const GLenum *bufs) 在 Qt 中可用吗? 我正在尝试将多个渲染目标传递给我的片段着色器,QtCreator 说
您可以指定使用哪些缓冲区绘制 glDrawBuffer() 例子 GLenum 缓冲区[] = { GL_COLOR_ATTACHMENT0 }; glDrawBuffers( 1, 缓冲区 ); 好
如果我理解正确,您可以将纹理附加到 FBO,然后使用 glDrawBuffers 将这些附加点链接到(片段)着色器输出索引。 glDrawBuffers 调用后后一种状态存储在哪里?当前绑定(bind
我有以下代码: IntBuffer DrawBuffers = Utils.createIntBuffer(2); int bfs[] = {GL30.GL_COLOR_ATTACHMENT0
我还是 opengl3 的新手,我正在尝试创建多 channel 渲染。 为此,我创建了 FBO,生成了多个纹理并使用 将它们附加到它上面 unsigned index_col = 0;
我总共有 5 个渲染目标。我使用相同的着色器写入前 4 个,然后在单独的 channel 中写入最后一个。 在对前 4 个目标调用渲染之前,我调用: GLenum drawBuffers[] = {
我尝试创建一个带有 2 个纹理的 FrameBuffer(多渲染目标)。然后在每个时间步中,两个纹理都被清除和绘制,如下代码。 (某些部分将被替换为伪代码以使其更短。) 版本 1 //beginnin
我的多渲染目标代码出现了一些非常奇怪的行为,并且开始怀疑我是否灾难性地误解了它的工作方式。 我正在 2.1 版上下文中运行。这是我正在执行的渲染设置代码的核心部分: glBindFramebuffer
我无法理解如何将 glReadBuffer() 和 glDrawBuffer() 调用移植到 Open GL ES 1.1。互联网上的各种论坛帖子只是说“使用 VBO”,而没有深入探讨。 你能帮我理解
我正在将代码从 Windows 移植到 Android,但 Opengl ES 2.0 中不存在一些 GL 方法。 目的是将所有渲染到将使用特定着色器渲染的纹理。 第一行: window 版本 glF
在 iOS 上使用 OpengGL ES 3.0,我想使用一个片段着色器使用一个帧缓冲区对象绘制到 2 个不同颜色的附件(不是同时)(总部)。但是,调用时出现 GL_INVALID_OPERATION
我是一名优秀的程序员,十分优秀!