OpenGLでLWJGLで使用するためにGLSLシェーダをコンパイルしようとしています。私はmacOS Sierraにいる。GLSLサポートされていないバージョン
シェーダをコンパイルしようとしたとき、私は次のエラーを取得する:
ERROR: 0:1: '' : version '400' is not supported
ERROR: 0:1: '' : syntax error: #version
シェーダコードは、Windows上で動作しますが、MacOSの上でテストするとき、それはしていません。 ここシェーダコードです:ここで
#version 400 core
in vec3 position;
in vec2 textureCoords;
out vec2 pass_textureCoords;
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
void main(void)
{
gl_Position = projectionMatrix * viewMatrix * vec4(position, 1.0);
pass_textureCoords = textureCoords;
}
は私がシェーダをロードしています方法です...
private static int loadShader(String file, int type) throws IOException {
StringBuilder shaderSource = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
ShaderProgram.class.getClassLoader().getResourceAsStream("shaders/" + file))
)) {
String line;
while ((line = reader.readLine()) != null) {
shaderSource.append(line).append('\n');
}
System.out.println(shaderSource.toString());
int shaderID = GL20.glCreateShader(type);
GL20.glShaderSource(shaderID, shaderSource);
GL20.glCompileShader(shaderID);
if (GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
System.out.println(GL20.glGetShaderInfoLog(shaderID, 500));
System.err.println("Error compiling shader " + file);
System.exit(-1);
}
return shaderID;
}
}
print文は正しい出力を返し、まだそれはまだ私にエラーを与えます。
解決策のためにstackoverflow全体を検索しましたが、誰もが私が持っている改行なしでそれをコンパイルしていると言います。私はなぜこれが起こっているのか混乱しています。
なぜ、ファイルを1行ずつ読むのがファイルを読むのに良いと思うのですか? [簡単な方法があります。](https://stackoverflow.com/a/326440/734069) –
@NicolBolasまあ、それは手近な質問に役立つわけではありませんが、Files.readAllBytes(パフォーマンスは賢明です)と違いはありません一行ずつ読むだけで、それを書くのが本当に短くて済みます。 – Erouax
'glGetString(GL_SHADING_LANGUAGE_VERSION)'(またはそれに相当するJWJGL)の値は何ですか?コンテキストがGLSL 4.0をサポートしていない可能性がありますか? – MuertoExcobito