java - OpenGL Compute Shader 未在笔记本电脑上链接
问题描述
我正在编写一个程序,该程序在 OpenGL 中大量使用计算着色器(在 Java 中使用 JOGL),它在我的台式计算机上运行良好,但不会链接我笔记本电脑上的着色器。
我目前有一个桌面系统,运行带有 GTX 1060 的 Ubuntu 18.04LTS,它运行没有问题,但是在我的笔记本电脑上运行时,运行 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
解决方案
请参阅评论,着色器编译中的问题在设备之间不一致。
推荐阅读
- python - 如何解决 django 中的无反向匹配错误
- javascript - 如何从 Jmeter 中的 JSON 请求中提取值
- ios - 在 Objective-C 或 Swift 中将 NSArray 转换为按频率排序的唯一值数组
- c# - 使用 SelectMany 获取具有父项的实体集合会引发 InvalidOperationException
- shell - Nginx Gunicon Dash (Flask) App 似乎在某处缓存结果(在哪里??)
- c++ - 什么是正确的 json 配置脚本来配置代码运行器以在 Visual Studio 中运行?如何删除以下错误?
- node.js - Express 4 - 未调用自定义错误处理中间件
- javascript - 根据下拉值激活复选框
- c++ - 这里有什么问题?奇怪的错误信息(对我来说)
- linux - 搜索特定名称时在 find 中使用 prune