我們的 Opera 好友在實際的 OpenGL ES 2.0 硬體上測試 WebGL 時,發現許多示範和應用程式在 fragment 著色器中使用高精確度,但其實並不需要這麼做。
片段著色器中的 Highp 是 OpenGL ES 2.0 規格中的選用部分,因此並非所有硬體都支援此功能 (即使支援,也可能會影響效能)。使用 mediump 通常就足夠了,而且可以確保應用程式也能在行動裝置上運作。
實際上,如果片段著色器先前以
precision highp float;
變更為以下內容應該就能解決問題:
precision mediump float; // or lowp