【发布时间】:2014-10-29 21:55:11
【问题描述】:
第一个问题,是如何在不使用多个片段着色器的情况下,从单一光源到使用多个光源。
我的直觉是,每次运行着色器计算都需要光源坐标,也许还需要一些颜色信息,我们可以循环运行 n 个光源的计算。
如何将多个灯光传递到着色器程序中?我是否使用一系列制服?我的猜测是传入一个带有每个光源坐标的制服数组,然后指定有多少个光源,然后设置一个最大值。
我可以为着色器程序调用 getter 或 setter 方法吗?而不是仅仅操纵全局变量?
我正在使用本教程和 libGDX 实现来学习如何做到这一点: https://gist.github.com/mattdesl/4653464
【问题讨论】:
-
com.badlogic.gdx.graphics.g3d.shaders.DefaultShader处理来自环境的多个灯光。这个包还包含一个默认的 vert/frag 着色器。可能会给你一些启发。