android - 如何在 opengl es 3+ 中获取屏幕外帧缓冲区内底层对象的像素颜色?

标签 android qt opengl-es qml

我有 2 个视觉对象,第一个包含背景图像,第二个用信息覆盖它。现在我需要第二个 fragment 着色器中的每个像素,第一个对象的基础颜色值。构造是使用 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;
}

关于android - 如何在 opengl es 3+ 中获取屏幕外帧缓冲区内底层对象的像素颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58978147/

相关文章:

javascript - Golang中如何使用javascript获取特定网站元素或提交表单

android - 如何正确地从 Firebase 实时数据库中检索值?

java - 从 PRAGMA table_info() 获取名称和类型

android - Android 2.2 中的 BackupManager 和 BackupAgent

c++ - 无法理解如何使用 drawText for qpainter 旋转文本

c++ - 如果作为参数传递,则打开文件,否则打开主应用程序菜单

java - 当我使用 Log.e 时,XMLPullParser 不起作用

android - 如何在 Android 上调试着色器

使用 OpenGL 的 Android 2D 游戏

opengl-es - 计算顶点法线(OpenGL ES)时没什么问题