Glsl GLLINK程序中着色器初始化中的Jogl崩溃

Glsl GLLINK程序中着色器初始化中的Jogl崩溃,glsl,shader,jogl,opengl-3,jvm-crash,Glsl,Shader,Jogl,Opengl 3,Jvm Crash,我们有了一个新的笔记本电脑和Nvidia 880m win8.1附带了它,我们安装了7 x64 试图执行jogl时,java正在崩溃 当调用glLinkProgram时,它崩溃 Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j jogamp.opengl.gl4.GL4bcImpl.dispatch_glLinkProgram1(IJ)V+0 j jogamp.opengl.gl4.GL4bcImpl.glLink

我们有了一个新的笔记本电脑和Nvidia 880m

win8.1附带了它,我们安装了7 x64

试图执行jogl时,java正在崩溃

当调用glLinkProgram时,它崩溃

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j jogamp.opengl.gl4.GL4bcImpl.dispatch_glLinkProgram1(IJ)V+0
j jogamp.opengl.gl4.GL4bcImpl.glLinkProgram(I)V+46
j javax.media.opengl.DebugGL4bc.glLinkProgram(I)V+9
j glsl.GLSLProgramObject.initializeProgram(Ljavax/media/opengl/GL3;Z)V+113
我用过去写的代码创建了着色器,它一直工作,而且我从来没有遇到过问题,所以我担心它与英伟达OpenGL驱动程序有关联。 我正在以这种方式初始化程序

public final void initializeProgram(GL3 gl3, boolean cleanUp) {
    _progId = gl3.glCreateProgram();

    for (int i = 0; i < _vertexShaders.size(); i++) {
        gl3.glAttachShader(_progId, _vertexShaders.get(i));
    }

    for (int i = 0; i < _fragmentShaders.size(); i++) {
        gl3.glAttachShader(_progId, _fragmentShaders.get(i));
    }

    gl3.glLinkProgram(_progId);

    int[] params = new int[]{0};
    gl3.glGetProgramiv(_progId, GL3.GL_LINK_STATUS, params, 0);

    if (params[0] != 1) {

        System.err.println("link status: " + params[0]);
        gl3.glGetProgramiv(_progId, GL3.GL_INFO_LOG_LENGTH, params, 0);
        System.err.println("log length: " + params[0]);

        byte[] abInfoLog = new byte[params[0]];
        gl3.glGetProgramInfoLog(_progId, params[0], params, 0, abInfoLog, 0);
        System.err.println(new String(abInfoLog));
    }

    gl3.glValidateProgram(_progId);

    if (cleanUp) {
        for (int i = 0; i < _vertexShaders.size(); i++) {
            gl3.glDetachShader(_progId, _vertexShaders.get(i));
            gl3.glDeleteShader(_vertexShaders.get(i));
        }

        for (int i = 0; i < _fragmentShaders.size(); i++) {
            gl3.glDetachShader(_progId, _fragmentShaders.get(i));
            gl3.glDeleteShader(_fragmentShaders.get(i));
        }
    }
}
public final void initializeProgram(GL3 GL3,布尔清除){
_progId=gl3.glCreateProgram();
对于(int i=0;i<_vertexShaders.size();i++){
gl3.glAttachShader(_progId,_vertexShaders.get(i));
}
对于(int i=0;i<_fragmentShaders.size();i++){
gl3.glAttachShader(_progId,_fragmentShaders.get(i));
}
gl3.glLinkProgram(_progId);
int[]params=新的int[]{0};
gl3.glGetProgramiv(_progId,gl3.GL_LINK_STATUS,params,0);
如果(参数[0]!=1){
System.err.println(“链接状态:+params[0]);
gl3.glGetProgramiv(_progId,gl3.GL\u INFO\u LOG\u LENGTH,参数,0);
System.err.println(“日志长度:+params[0]);
byte[]abInfoLog=新字节[params[0]];
gl3.glGetProgramInfoLog(_progId,params[0],params,0,abInfoLog,0);
System.err.println(新字符串(abInfoLog));
}
gl3.glValidateProgram(_progId);
如果(清理){
对于(int i=0;i<_vertexShaders.size();i++){
gl3.glDetachShader(_progId,_vertexShaders.get(i));
gl3.glDeleteShader(_vertexShaders.get(i));
}
对于(int i=0;i<_fragmentShaders.size();i++){
gl3.glDetachShader(_progId,_fragmentShaders.get(i));
gl3.glDeleteShader(_fragmentShaders.get(i));
}
}
}
有什么建议吗


337和340驱动程序都失败了

正如jmaasing建议的那样,我不得不强制使用专用图形卡


我还必须在IESHIMS.DLL的路径中添加“C:\StudioFortual\Internet Explorer”,并将零售Wi7更新到SP1,并更新各种更新< /P>。JMAWAYE告诉您,您的英特尔芯片可能被用来代替英伟达芯片:如果可能的话,请向我们展示您的GLSL代码。如果有带int计数器的for循环(对于int i=0…),请尝试将它们转换为float循环。它解决了我超级神秘的GLLINK程序崩溃。。。不知道为什么…更多信息:见我的答案