我有2个视觉对象,第一个包含背景图像,第二个包含信息。现在,我需要第二个片段着色器中的每个像素,即第一个对象的基础颜色值。使用Qt Qml完成构建(第一个对象=图像,第二个对象一个qquickframebufferobject),并且我使用了延迟渲染。也许有人知道怎么去那里?
我相信您可以为此使用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;
}
在我的控制台上...
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