如何在opengl es 3+中的屏幕外帧缓冲区中获取基础对象的像素颜色?

问题描述 投票:1回答:2

我有2个视觉对象,第一个包含背景图像,第二个包含信息。现在,我需要第二个片段着色器中的每个像素,即第一个对象的基础颜色值。使用Qt Qml完成构建(第一个对象=图像,第二个对象一个qquickframebufferobject),并且我使用了延迟渲染。也许有人知道怎么去那里?

android qt opengl-es qml
2个回答
0
投票

我相信您可以为此使用EXT_shader_framebuffer_fetch扩展名。

在OpenGL ES 2.x中,用法是这样的(例如,我知道是愚蠢的着色器):

#extension GL_EXT_shader_framebuffer_fetch : require
precision mediump float;
void main()
{
    gl_FragColor = gl_LastFragData[0] * 0.5;
}

在OpenGL ES 3.x中,用法是这样的:

#version 300 es
#extension GL_EXT_shader_framebuffer_fetch : require
precision mediump float;
inout vec4 fragColor;
void main()
{
    fragColor = fragColor * 0.5;
}

0
投票

在我的控制台上...

W Camara  : QOpenGLShader::compile(Fragment): 1:2: P0003: Warning: Extension 'GL_ARB_fragment_coord_conventions' not supported
W Camara  : 4:1: P0003: Extension 'GL_EXT_shader_framebuffer_fetch' not supported
W Camara  : *** Problematic Fragment shader source code ***
W Camara  : #version 300 es
W Camara  : #ifdef GL_KHR_blend_equation_advanced
W Camara  : #extension GL_ARB_fragment_coord_conventions : enable
W Camara  : #extension GL_KHR_blend_equation_advanced : enable
W Camara  : #endif
W Camara  : #ifndef GL_FRAGMENT_PRECISION_HIGH
W Camara  : #define highp mediump
W Camara  : #endif
W Camara  : #line 1
W Camara  : #extension GL_EXT_shader_framebuffer_fetch : require
© www.soinside.com 2019 - 2024. All rights reserved.