小编Che*_*ewy的帖子

将 GL_COLOR_ATTACHMENT1 设置为 GL_DRAW_BUFFER0 时,glDrawBuffers 会导致 GL_INVALID_OPERATION

iOS上使用OpenGL ES 3.0时,我想使用一个片段着色器使用一个帧缓冲区对象 (FBO) 绘制 2 个不同的颜色附件(不同时)。但是,我在调用时收到GL_INVALID_OPERATION错误:

const GLenum attachments[] = {GL_COLOR_ATTACHMENT1};
glDrawBuffers(1, attachments);
Run Code Online (Sandbox Code Playgroud)

我检查了 GL 状态并确保当前绑定了正确的 FBO,并且在此调用之前没有 GL_ERROR,并且 GL_MAX_COLOR_ATTACHMENTS 为 4。在 Xcode 中拍摄 GPU 快照会给出以下错误描述:

指定的操作对于当前 OpenGL 状态无效

我创建一个带有 2 个颜色附件的帧缓冲区对象,如下所示:

// Assuming the FBO and the 2 requried textures were correctly generated

glBindFramebuffer(GL_FRAMEBUFFER, _fbo);
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _fbo_tex[0], 0);
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, _fbo_tex[1], 0);

// glCheckFramebufferStatus(GL_FRAMEBUFFER) returns GL_FRAMEBUFFER_COMPLETE
Run Code Online (Sandbox Code Playgroud)

顶点着色器:

#version 300 es

uniform mat4 modelviewProjectionMatrix;
in vec4 position;

void main() {
    gl_Position …
Run Code Online (Sandbox Code Playgroud)

opengl-es fragment-shader ios

2
推荐指数
1
解决办法
1701
查看次数

标签 统计

fragment-shader ×1

ios ×1

opengl-es ×1