Я пишу программу, в которой интенсивно используются вычислительные шейдеры в OpenGL (в Java с использованием JOGL), которая отлично работает на моем настольном компьютере, но не связывает шейдеры на моем ноутбуке.
В настоящее время у меня есть настольная система под управлением Ubuntu 18.04LTS с GTX 1060, где она работает без проблем, однако при работе на моем ноутбуке под управлением Ubuntu 18.04LTS, GTX 1650 шейдер не связывается должным образом и печатает сообщение об ошибке: uncompiled / unspecialized shader "в журнале программ шейдеров.
Я подумал, что это могут быть проблемы с драйверами, и попытался переключиться на проприетарные драйверы nVidia, но безуспешно. На обеих платформах запущен один и тот же Open-jdk 8.
Примечание. Графические шейдеры работают так, как задумано, это происходит только при попытке связать вычислительный шейдер, даже при использовании одного и того же метода для чтения исходного кода, поэтому Я уверен, что там нет никаких проблем.
Проблема возникает при связывании шейдера с программой:
int computeShader = gl.glCreateShader(GL4.GL_COMPUTE_SHADER); //Create compute shader
gl.glShaderSource(computeShader, computeShaderSrc.length, computeShaderSrc, null);
gl.glCompileShader(computeShader);
int shaderProg = gl.glCreateProgram(); //Create shader program and attach compute shader
printProgramLog(shaderProg);
System.out.println("Created shader\n");
System.out.println("Attaching shader");
gl.glAttachShader(shaderProg, computeShader);
printProgramLog(shaderProg);
System.out.println("Attached shader\n");
System.out.println("Linking shader");
gl.glLinkProgram(shaderProg);
printProgramLog(shaderProg);
System.out.println("Linked Shader\n");
gl.glDeleteShader(computeShader);
Это выводит:
Created shader
Attaching shader
Attached shader
Linking shader
Program Info Log:
error: linking with uncompiled/unspecialized shader
Linked Shader