GL20.glCompileShader сбой Java программа с использованием OpenGL - PullRequest
0 голосов
/ 19 апреля 2020

Я получаю следующий код ошибки при попытке запустить мое приложение Java с использованием OpenGL в MacOS:

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

Ошибочный код описан ниже. По результатам проверки я установил, что строка, вызывающая сбой моей программы, равна GL20.glCompileShader(shaderID); Полный код приведен ниже:

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;
}

1 Ответ

0 голосов
/ 27 апреля 2020

просто взглянув на код все должно быть в порядке. Поскольку в вашем списке ошибок нет GL_INVALID, я предполагаю, что что-то не так с импортом или требованиями.

, если вы не используете отладчик, который вам следует использовать, используйте System.out, чтобы проверить, что вернул glCreateShader.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...