IE11和Edge慢速链接程序

时间:2016-03-08 09:04:03

标签: internet-explorer glsl webgl microsoft-edge

我已经开始遇到与WebGLRenderingContext.linkProgram相关的IE11和Edge下的奇怪性能问题。虽然我所定位的其他平台(Chrome,Firefox,Opera,Chrome Android,Firefox Android和iOS Safari)在几毫秒内成功链接了所有着色器,但IE11和Edge将主线程挂起最多4秒!在nVidia GTX笔记本电脑和仅支持i7的笔记本电脑上发生两者

我有点不知道是什么原因造成这种情况 - 着色器都很大(包括每个片段着色器顶部的一个大型公共库),但只有其中一个真的窒息。

更新:

似乎使用以下功能导致了悲伤:

float getShadowCoefficient() {
    if(shadowType == SHADOW_SINGLE)
        return shadowDepthSingle();
    if(shadowType == SHADOW_LERP4)
        return shadowDepthLerp4();
    if(shadowType == SHADOW_PCF)
        return shadowDepthPCF();
    if(shadowType == SHADOW_PCF_LERP)
        return shadowDepthPCFLerp();
    if(shadowType == SHADOW_VSM)
        return shadowDepthVSM();
    return 1.0;
}

是。这是一个由制服而不是#ifdef驱动的ubershader。正是为了避免这种缓慢的启动。

目前我能想出的这个令人难以置信的慢编译的唯一合理解释是IE和Edge正在将这些调用扩展到所有着色器组合中。这看起来有可能吗?

0 个答案:

没有答案