charles_gz 2014-02-20 01:43
浏览 1895

QML中使用shader编程达到光照效果

在用QML做界面工作,现在有个需求是灯光效果参照digia公司的例子做的修改(图片在这还没弄明白怎么上传,后面的网址上有图片信息:http://bbs.csdn.net/topics/390712006),
最终要达到的效果是图片中红色矩形框不要,只要里面的黄色区域的光点。也就是说在窗口中有个pathView光点直接打到pathView的每个item上。
这个需求是否可以做到?应该怎么做?

当然铺满全屏看上去就没有矩形框了,但是那样使得界面内所有的内容颜色变白。小弟第一次接触shader编程希望做过的朋友给予指点,谢谢了!

目前的代码如下:
fragmentShader: "
varying highp vec2 qt_TexCoord0;
uniform highp float qt_Opacity;
uniform highp float _lightPosX;
uniform highp float _lightPosY;
uniform highp float diffuseBoost;
uniform highp float lightIntensity;
uniform highp vec4 colorizeColor;
uniform bool switchX;
uniform bool switchY;

void main(void)
{
    highp vec2 pixPos = qt_TexCoord0;

    highp vec3 normal = normalize(vec3(0.0,0.0,1.0));
    highp float xp = float(switchX) * (_lightPosX - pixPos.x) + float(!switchX) * (pixPos.x - _lightPosX);
    highp float yp = float(switchY) * (_lightPosY - pixPos.y) + float(!switchY) * (pixPos.y - _lightPosY);
    highp vec3 light_pos = normalize(vec3(xp, yp, 0.03));

    highp float diffuse = max(dot(normal, light_pos), 0.2);

    highp vec4 color = vec4(diffuse *vec3(1.0,1.0,1.0), 0.0);

    gl_FragColor = color * qt_Opacity;
}
"
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 stata安慰剂检验作图但是真实值不出现在图上
    • ¥15 c程序不知道为什么得不到结果
    • ¥40 复杂的限制性的商函数处理
    • ¥15 程序不包含适用于入口点的静态Main方法
    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题