错误代码为:
Error compiling Shader code: ERROR: 0:1: '' : syntax error: #version
我的着色器编译器代码是:
public class Shader {
private int shaderProgramID;
private boolean beingUsed = false;
private String vertexSource;
public Shader (int type, String path) {
shaderProgramID = glCreateProgram();
StringBuilder builder = new StringBuilder();
try (InputStream in = new FileInputStream(path);
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
String line;
while ((line = reader.readLine()) != null) {
builder.append(line).append("\n");
}
} catch (IOException ex) {
throw new RuntimeException("Failed to load a shader file!"
+ System.lineSeparator() + ex.getMessage());
}
vertexSource = builder.toString();
}
public void compile() {
// ============================================================
// Compile and link shaders
// ============================================================
int vertexID, fragmentID;
// First load and compile the vertex shader
int shaderId = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shaderId, vertexSource);
System.out.println(vertexSource);
glCompileShader(shaderId);
if (glGetShaderi(shaderId, GL_COMPILE_STATUS) == 0) {
System.out.println("Error compiling Shader code: " + glGetShaderInfoLog(shaderId, 1024));
}
glAttachShader(shaderProgramID, shaderId);
glLinkProgram(shaderProgramID);
if (glGetProgrami(shaderProgramID, GL_LINK_STATUS) == 0) {
System.out.println("Error linking shader program: " + glGetProgramInfoLog(shaderProgramID));
}
}
public void use() {
if (!beingUsed) {
// Bind shader program
glUseProgram(shaderProgramID);
beingUsed = true;
}
}
public int getAttributeLocation(CharSequence name) {
return glGetAttribLocation(shaderProgramID, name);
}
public void detach() {
glUseProgram(0);
beingUsed = false;
}
着色器代码为:
#version 120 core
void main(){
realpos.x = (1920 / 2) + 40 * aPosition.x;
realpos.y = (1000 / 2) + 40 * aPosition.y;
}
我使用带有lwjgl库的java 11,opengl版本是2.1 Metal-83.1。同样值得注意的是,我的系统是一个m2的mac。
我早些时候有这个错误,后来它奇怪地消失了,现在又回来了,我试着更改着色器版本,但opengl 2.1确实使用了120,其他版本给出了错误版本等的预期错误。
我已经做了好几个小时的工作,所以如果有任何帮助,我们将不胜感激!
(第一次在这里发布,所以请让我知道我是否可以更好地格式化它:>)