qt6 android glsl samplerExternalOES

我对于opengl和glsl都不熟悉
只是qt6去掉了QSGSimpleMaterialShader这个类
vertexShader和fragmentShader必须要用qsb来生成.qsb文件
不再是填写字符串

在用qsb生成fragmentShader.qsb时
因为里面用到了samplerExternalOES,所以怎么生成都会报错
根据官方的说法
要另外写一个文件,里面写入samplerExternalOES, 来注入fragmentShader.qsb

首先编写一个文件shader_gles.frag

precision highp float;
#extension GL_OES_EGL_image_external : require
varying vec2 vTextureCoord;
struct buf
{
    float qt_Opacity;
};
uniform buf ubuf;
uniform samplerExternalOES sTexture;
void main()
{
    gl_FragColor = texture2D(sTexture, vTextureCoord) * ubuf.qt_Opacity;
}

编写fragmentShader.frag

#version 440
#extension GL_OES_EGL_image_external_essl3 : require
precision mediump float;
layout (location = 1) in vec2 vTextureCoord;
layout (location = 0) out vec4 fragColor;
layout(std140, binding = 0) uniform buf {
    float qt_Opacity;
} ubuf;
layout (binding = 1) uniform sampler2D sTexture;
void main() {
    fragColor = vec4(texture(sTexture, vTextureCoord)) * ubuf.qt_Opacity;
}

fragmentShader.frag里面使用的是sampler2D ,
通过qsb指令将其替换
注意两个文件变量名统一

首先输入
qsb --glsl 100es -o fragmentShader.qsb fragmentShader.frag
生成fragmentShader.qsb
然后输入
qsb -r glsl,100es,shader_gles.frag fragmentShader.qsb
shader_gles.frag的内容注入到fragmentShader.qsb
输入qsb -d fragmentShader.qsb查看内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值