Android, странная ошибка в Opengles 2.0 Calling Gluniformmatrix4fv (UmatrixLocation, 10, False, Matrix, 0)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android, странная ошибка в Opengles 2.0 Calling Gluniformmatrix4fv (UmatrixLocation, 10, False, Matrix, 0)

Сообщение Anonymous »

На некоторых устройствах (до настоящего времени Samsung Galaxy Note 2 и 3 + Xperia Z1) я получаю эту ошибку, вызову с вызовом Gluniformmatrix4fv (UmatrixLocation, 10, False, Matrix, 0), чтобы установить матрицу преобразования.

Ошибка: < /p>

java.lang.IllegalArgumentException: length - offset < count*16 < needed
at android.opengl.GLES20.glUniformMatrix4fv(Native Method)
< /code>

И это вызвано этой строкой в ​​моем коде Textureshaderprogram: < /p>

glUniformMatrix4fv(uMatrixLocation, 10, false, matrix, 0);
< /code>

uMatrixLocation - указатель местоположения матрицы var
10 - количество матриц преобразования (так matrix.length () = 10 * 16 = 160 )
matrix - это Float [] Valible, содержащая все данные о преобразовании
, а 0 - смещение в матрице < /p>

Я пытался увеличить переменная графа для его решения, но без успехов. br />https://android.googlesource.com/platfo ... gles20.cpp

P> и эти конкретные строки делают проверку и выбросьте вышеуказанную ошибку: < /p>

_remaining = _env->GetArrayLength(value_ref) - offset;
if (_remaining < count*16) {
_exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "length - offset < count*16 < needed";
goto exit;
}
< /code>

any clue about why these devices throw the error?
Could the cpp file on these devices differ from the other devices?

added 20140114 18:47
These are the float values passed to glUniformMatrix4fv(uMatrixLocation, 10, false, matrix, 0)< /code> в переменной матрицы: < /p>

my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.0
my float is: -0.8425926
my float is: 0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.098958336
my float is: -1.1574074
my float is: 0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: -0.296875
my float is: -1.1574074
my float is: -0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: -0.098958336
my float is: -1.1574074
my float is: -0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.296875
my float is: -1.1574074
my float is: 0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.9010416
my float is: -0.8240741
my float is: 0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.9010416
my float is: 0.8240741
my float is: 0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.9010416
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.5625
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 1.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: 0.0
my float is: -1.0
my float is: 0.0
my float is: 0.0
my float is: -1.1574074
my float is: 0.0
my float is: 1.0
< /code>

and this is my vertex shader:

uniform mat4 u_Matrix[10];

attribute lowp float a_MatrixIndex;

attribute vec4 a_Position;
attribute vec2 a_TextureCoordinates;
attribute vec3 a_Color;

varying vec3 v_Color;
varying vec2 v_TextureCoordinates;

void main()
{
v_Color = a_Color;
int MatrixIndex = int(a_MatrixIndex);

v_TextureCoordinates = a_TextureCoordinates;
gl_Position = u_Matrix[MatrixIndex] * a_Position;
}


Подробнее здесь: https://stackoverflow.com/questions/211 ... rixlocatio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»