【问题标题】:Webgl shader compilation errors in google chrome谷歌浏览器中的 Webgl 着色器编译错误
【发布时间】:2012-06-11 01:34:50
【问题描述】:

我正在使用本教程学习three.js:http://demo.bkcore.com/threejs/webgl_tron_glow_seq.html。 本教程本身工作正常,但我自己的代码,基于它失败,错误如下:

ERROR: 0:26: 'nuniform' : syntax error  Three.js:325
precision highp float;
#define MAX_DIR_LIGHTS 0
...
uniform vec3 cameraPosition;
uniform sampler2D tDiffuse;nuniform sampler2D tGlow;nvarying vec2 vUv;nvoid main() {nvec4 texel = texture2D( tDiffuse, vUv );nvec4 glow = texture2D( tGlow, vUv );ngl_FragColor = texel + vec4(0.5, 0.75, 1.0, 1.0) * glow * 2.0;n} 


ERROR: 0:62: 'nvoid' : syntax error  Three.js:325
precision highp float;
#define VERTEX_TEXTURES
...
varying vec2 vUv;nvoid main() {nvUv = vec2( uv.x, 1.0 - uv.y );ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );n} 

等等

看起来浏览器(谷歌浏览器)没有正确解析带有编码在其中的着色器的字符串。 来自三个.js 源(缩小版)的代码中出现错误。

一看,代码就ok了。

我只是错过了一些东西,但我不知道到底是什么。

有什么帮助吗?

【问题讨论】:

  • 所以...向我们展示您的着色器源代码,以便我们确定您在哪里以及如何犯了错误 :)
  • 粘贴定义着色器的代码。'n'肯定来自换行符,但由于某种原因,斜线被删除了。

标签: javascript google-chrome webgl three.js


【解决方案1】:

在我看来,那里有“\n”会导致问题。看起来 \ 被删除了,但 n 被保留了。

【讨论】:

  • 您是在说错误转储中的所有杂散ns 和ts 吗?
  • @JaredFarrish: 确实我是......虽然不能看到他的着色器源,但很难判断......
  • 我注意到似乎发生了一些奇怪的事情。你有一双敏锐的眼光。
  • @JaredFarrish:我承认我认为“t”只是他命名方案的一部分,但事后看来,这些确实可能是制表符:D
  • 好吧,我在我的资源中发现了问题。谢谢大家! -)
【解决方案2】:

您发布的内容肯定看起来不对。

第 5 行的“nuniform”是无效的 GLSL。

看起来您使用的任何缩小器都有错误。如果您的着色器位于<script> 标签中,您可能需要修复缩小器以仅缩小没有“类型”或具有type="javascript"type="text/javascript" 的脚本,因为其他任何东西都不是JavaScript,不应该被缩小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2014-09-16
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多