glGetShaderInfoLog возвращает пустую строку (Android) - PullRequest
8 голосов
/ 04 января 2011

Я изменяю версию Android-версии примера 2d текстуры из руководства по программированию OpenGl ES2.0, чтобы изменить фрагментный шейдер.это написано на чистом Java и не использует NDK.

Пример vanilla отлично работает на моем телефоне, но когда я меняю код шейдера, он больше не работает.Это потому, что мой модифицированный шейдер не компилируется (очевидно), но я не могу найти причину проблемы, так как glGetShaderInfoLog возвращает пустую строку.

Я провел поиск по этой проблеме, и, по-видимому, по состоянию на 22 июля это была известная проблема, но мне было интересно, как можно обойти ее.В одном сообщении я обнаружил, что они написали оболочку NDK для этой функции, но, будучи новичком в разработке для Android, я не знаю, как это сделать.

Ответы [ 3 ]

6 голосов
/ 23 января 2012

Вы страдаете от ошибки .Я работал, используя старые привязки GL ES 2.0 , чтобы получить функционирующий glGetShaderInfoLog.Примерно так:

import com.badlogic.gdx.backends.android.AndroidGL20;
...
AndroidGL20 gl2 = new AndroidGL20();
Log.e(TAG, gl2.glGetShaderInfoLog(shader));

Я все еще использую стандартную библиотеку-оболочку GLES20 для всего остального, так что это было просто добавить в мою кодовую базу.Очевидно, что эти две оболочки могут сосуществовать без проблем.

2 голосов
/ 10 января 2011

Просто если кто-нибудь найдет этот вопрос, так как столкнулся с той же проблемой, единственный способ, которым я нашел, чтобы «обойти это», - это скомпилировать шейдер с другим приложением (таким как Rendermonkey).Не идеально, но это продвинуло меня в моем проекте!

1 голос
/ 04 сентября 2013

У меня была такая же проблема.

  1. Убедитесь, что в ApplicationManufest.xml имеется следующее:

  2. Вызывайте это после инициализации GLSurfaceView

glSurfaceView.SetEGLContextClientVersion (2);

...