为什么 Blender 导出的着色器 (*.frag, *.vert) 在 Irrlicht 中变成黑色

Why Blender exported shader (*.frag, *.vert) are turning into black color in Irrlicht

我在 Irrlicht 1.8.3 中 运行 到 "official tuto 10 Shader",我修改了这个官方示例以使用我使用插件从 Blender 导出的着色器:http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Game_Engine/Export_GLSL

导出的 material 只是由简单的漫反射和镜面反射颜色组成,根本不是黑色,但在 Irrlicht 中它看起来是黑色

这是 Irrlicht SDK 中着色器教程的一部分(我只是修改了加载的着色器的名称)假设没有使用 CG,并且使用了高级着色器。

case video::EDT_OPENGL:
    if (UseHighLevelShaders)
    {
        if (!UseCgShaders)
        {
            /**I MODIFIED NAMES OF THE ORIGINAL FRAG VERT FILES BELOW*/
            psFileName = "../../media/mat_Material.frag";//opengl.frag";
            vsFileName = "../../media/mat_Material.vert";//opengl.vert";
        }
        else
        {
            // Use HLSL syntax for Cg
            psFileName = "../../media/d3d9.hlsl";
            vsFileName = psFileName; // both shaders are in the same file
        }
    }
    else
    {
        psFileName = "../../media/opengl.psh";
        vsFileName = "../../media/opengl.vsh";
    }
    break;
}

查看您发布的着色器文件,问题很明显:Blender Game Engine 使用的制服和 Irrlicht 使用的制服非常不同(名称不同,语义不同)。您不能简单地将任意着色器文件放入现有引擎并期望它 "just" 工作。您必须对其进行调整,使其与加载它的主机渲染代码相匹配。