java - OpenGL 计算着色器无法在笔记本电脑上链接

标签 java opengl shader jogl compute-shader

我正在编写一个程序,该程序在 OpenGL 中大量使用计算着色器(在 Java 中使用 JOGL),该程序在我的台式计算机上运行良好,但不会链接我的笔记本电脑上的着色器。

我目前有一个桌面系统,运行 Ubuntu 18.04LTS 和 GTX 1060,运行没有问题,但是当在我的笔记本电脑上运行 Ubuntu 18.04LTS、GTX 1650 时,着色器无法正确链接并打印“错误” :与着色器程序日志中的未编译/非专用着色器链接。

我认为这可能是驱动程序问题,并尝试切换到专有的 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

最佳答案

请参阅评论,着色器编译中的问题在设备之间不一致。

关于java - OpenGL 计算着色器无法在笔记本电脑上链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470264/

相关文章:

java - 主程序流

java - 将 GraphML 导入 OrientDB 时出现 OutOfMemoryError

c++ - 绘图期间未处理的异常 (nvoglv32.dll)(裂缝)

Java Recursion - 几个递归调用的输出

java - 使用@Formula 增强 Spring 宠物诊所

c++ - 如何在 OpenGL 上渲染屏幕外?

c - 为什么这个小函数(在opengl中画一个圆圈)不能用c编译?

opengl - 使用 Cg 的 OpenGL 中的多个渲染目标

c++ - OpenGL相机运动程序顶点着色器问题

java - libGdx:为网格着色