Android Opengles 3.1 - поддерживаются ли объекты с единообразным буфером
У меня есть приложение OpenGLES 3.1, которое прекрасно работает на рабочем столе, но не на Android.
Бит, который идет не так, когда у меня есть однородные объекты буфера. Например, в вершинном шейдере ниже
layout (std140, binding = 0) uniform matrixUbo
{
mat4 projection;
mat4 view;
};
Это работает нормально, используя Deskop драйверы, но на Android это не удается. Версия opengles, на которой я тестирую, совместима с 3.2, и вызовы функций доступны в Android.
Я пробовал как установить привязки в вершинном шейдере, так и установить их с помощью метода glUniformBlockBinding, и оба не работают на Android (но оба работают на рабочем столе).
Если я не использую их для матрицы, то объекты отображаются нормально (я вижу их нормально на моем телефоне с Android), но когда я включаю эти матрицы, ничего не рисуется, что говорит о том, что матрица заполнена нулями.
Есть ли что-то особенное, что нужно сделать для поддержки UBO на Android?
Я рад предоставить больше информации по мере необходимости.
1 ответ
Чтобы ответить на мой собственный вопрос, они поддерживаются в Android OpenGLES 3.1, но при обновлении данных вам нужно использовать ByteBuffer, а не FloatBuffer, даже если вызовы функций поддерживают его. Странная проблема и боль отлаживать!