Я пытаюсь создать программу 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"
но если я пытаюсь загрузить шейдер из зависимости зависимости :
val fullShader = when {
root.endsWith('/') || root.endsWith('\\') -> "$root$shader"
else -> root + '/' + shader // here
}
тогда работает только косая черта. Все остальные опции запускают NPE при вызове createShaderFromPath
и потоке кода достигает this :
val lines = ClassLoader.getSystemResourceAsStream(path).use {
println(path)
InputStreamReader(it).readLines() // NPE
}
Почему?