[英]GL20.glCompileShader crashingly Java program using OpenGL
嘗試在 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
錯誤代碼如下所述。 通過檢查,我確定使我的程序崩潰的行是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;
}
只需查看代碼,一切都應該沒問題。 由於您的錯誤日志中沒有 GL_INVALID,我認為導入或要求有問題。
如果你不使用調試器,你應該使用System.out
來檢查 glCreateShader 返回的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.