java - LWJGL 顶点和片段着色器无法编译(错误 CO206)

标签 java opengl glsl shader lwjgl

我对学习 OpenGl 感兴趣已经有一段时间了。然而,每次我开始使用它时,在编译着色器时都会遇到同样的错误。这是吐出的错误代码。

0(1):错误 C0206:版本行中无效标记“无效原子 483265304”

我尝试查找错误,但没有发现太多任何内容...当然也没有任何内容可以提供如何解决问题的信息。

我不懂 C 或 C++,所以我使用 LWJGL。

这是我用来编译着色器的代码:

private static int loadShader(String file, int type){
    //System.out.println("Loading Shader.");
    StringBuilder shaderSource = new StringBuilder();
    try {
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        while((line = reader.readLine())!=null){
            //System.out.println(line);
            shaderSource.append(line).append("/n");
        }
        reader.close();
        //System.out.println("Closed Reader.");

    } catch (IOException e) {
        System.err.println("Could not read file!");
        e.printStackTrace();
        System.exit(-1);
    }
    //System.out.println("Creating Shader ID...");
    int shaderID = GL20.glCreateShader(type);
    //System.out.println("Created Shader ID, Compiling Shader.");
    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("Could not compile shader. Location: " + file);
        System.exit(-1);
    }
    return shaderID;
}

这是我的顶点着色器:

#version 400 core

in vec3 position;
out vec3 colour;

void main(void){

    gl_Position = vec4(position, 1.0);
    colour = vec3(position.x+0.5, 1.0, position.y+0.5);
}

这是我的片段着色器:

#version 400 core

in vec3 colour;
out vec4 out_Colour;

void main(void){
    out_Colour = vec4(colour, 1.0);
}

如果有人阅读本文,请先感谢您的宝贵时间。

最佳答案

基本错字 - 当您阅读每一行时,您附加了“/n”而不是“\n”。

@Nicol Bolas 提出了一个很好的观点 - 有一个函数 Files.readAllBytes(Path path) ,如果您使用它而不是重新实现功能,您将不太容易出现这样的小错误。

关于java - LWJGL 顶点和片段着色器无法编译(错误 CO206),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35165908/

相关文章:

java - 将 SWT 与 JOGL 结合使用时随机崩溃(竞争条件?)

opengl - GLSL 着色器中的恒定浮点值 - 有什么理由使用制服?

opengl - 我需要在片段着色器中进行输出 Gamma 校正吗?

用于模糊全文搜索的 Java 库

java - 将字符串集合传递给 (String...values)

c++ - 无法在 OpenGL 中绘制三角形,但其他图元可以正常渲染

c++ - 什么时候 glFlush 调用过于频繁?

iphone - glsl 着色器中 Z 轴旋转矩阵的问题

java - 如何在打印机中打印带有图像作为 Logo 的账单,java

java - 您多久编写一次新的 SQL 查询或尝试使用现有的 SQL 查询?