Сбой Jogl при инициализации шейдера в glLinkProgram

Мы получили новый ноутбук с Nvidia 880m

он пришел с win8.1, мы установили 7 x64

Пытаюсь запустить jogl, java крашится

http://pastebin.com/gv6117NK

происходит сбой при вызове 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

Я создаю шейдер, используя код, который я написал в прошлом, он всегда работал, и у меня никогда не было проблем, поэтому я боюсь, что это как-то связано с драйвером nvidia 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));
        }
    }
}

Какие-нибудь советы?

Драйверы 337 и 340 терпят неудачу


person elect    schedule 01.09.2014    source источник
comment
Как сказал вам jmaasing, ваш чип Intel, вероятно, используется вместо чипа Nvidia: .org/glLinkProgram-crash-tp4033000p4033001.html   -  person gouessej    schedule 01.09.2014
comment
Если возможно, покажите нам свой gsl-код. Если у вас есть циклы for со счетчиком int (для int i =0...), попробуйте преобразовать их в циклы с плавающей запятой. Это решило мой супер-загадочный сбой glLinkProgram... Не знаю почему...   -  person johan d    schedule 14.02.2015
comment
больше информации об этом: см. мой ответ на stackoverflow.com/questions/27411947/   -  person johan d    schedule 14.02.2015


Ответы (1)


Как предложил jmaasing, мне пришлось принудительно использовать выделенную графическую карту.

Мне также пришлось добавить «C:\Program Files\Internet Explorer» в путь к IEShims.dll и обновить розничную версию win7 до sp1 и различных обновлений.

person elect    schedule 01.09.2014