我正在尝试通过阅读特定的着色器来创建opengl程序,除了简单的文字外,其他什么都没有。
此文件直接位于src文件夹中。
如果我从主应用程序中读取了着色器,则斜杠,反斜杠,File.separator
或File.separatorChar
都没有问题:
"ec/core/render/shaders/gl3/texture.vert"
"ec/core/render/shaders/gl3\\texture.vert"
为逃脱加倍"ec/core/render/shaders/gl3" + File.separator + "texture.vert"
"ec/core/render/shaders/gl3" + File.separatorChar + "texture.vert"
但是如果我尝试从dependency util加载着色器:
val fullShader = when {
root.endsWith('/') || root.endsWith('\\') -> "$root$shader"
else -> root + '/' + shader // here
}
然后只有斜线有效。一旦调用createShaderFromPath
并且代码流到达this,所有其他选项都会触发NPE:
val lines = ClassLoader.getSystemResourceAsStream(path).use {
println(path)
InputStreamReader(it).readLines() // NPE
}
为什么?