简体   繁体   English

GL20.glCompileShader 崩溃 Java 程序使用 OpenGL

[英]GL20.glCompileShader crashingly Java program using OpenGL

I am getting the following error code when trying to run my Java application using OpenGL on MacOS:尝试在 MacOS 上使用 OpenGL 运行我的 Java 应用程序时收到以下错误代码:

A fatal error has been detected by the Java Runtime Environment:

  SIGSEGV (0xb) at pc=0x00007fff6ac1fd2d, pid=2068, tid=0x0000000000001903

 JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11)
Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode bsd-amd64 compressed oops)
 Problematic frame:
 C  [libsystem_platform.dylib+0x1d2d]  _platform_memmove$VARIANT$Haswell+0x4d

The erroneous code is describe below.错误代码如下所述。 By inspection, I have determined that the Line that is crashing my program is GL20.glCompileShader(shaderID);通过检查,我确定使我的程序崩溃的行是GL20.glCompileShader(shaderID); The full code is below:完整代码如下:

private static int loadShader(String file, int type) {
    StringBuilder shaderSource = new StringBuilder();
    try {
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        while ((line = reader.readLine()) != null) {
            shaderSource.append(line).append("//\n");
        }
        reader.close();
    } catch(IOException e) {
        e.printStackTrace();
        System.exit(-1);
    }
    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("Could not compile shader!");
        System.exit(-1);
    }
    return shaderID;
    //return 5;
}

just by looking on the code everything should be alright.只需查看代码,一切都应该没问题。 since there is no GL_INVALID in your errorlog, i assume something is wrong with import or requirements.由于您的错误日志中没有 GL_INVALID,我认为导入或要求有问题。

if u dont use a debugger, which you should, use System.out to check what glCreateShader returned.如果你不使用调试器,你应该使用System.out来检查 glCreateShader 返回的内容。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM