169 похожих чатов

Добрый вечер Смотрю на startAndroid курс по openGl, а именно урок

https://startandroid.ru/ru/uroki/vse-uroki-spiskom/398-urok-169-opengl-shejdery.html

столкнулся с проблемой в коде
final int[] compileStatus = new int[1];
glGetShaderiv(shaderId, GL_COMPILE_STATUS, compileStatus, 0);

у меня этот код на котлин выглядит как
val compileStatus = IntArray(1)
glGetShaderiv(shaderId, GL_COMPILE_STATUS, compileStatus, 0)

при выполнении получаю ошибку:
java.lang.IllegalArgumentException: length - offset < 1 < needed at android.opengl.GLES20.glGetProgramiv(Native Method)

погуглив наткнулся на
https://android.googlesource.com/platform/frameworks/base/+/master/core/jni/android_opengl_GLES20.cpp

где в методе glGetShaderiv это исключение выбрасывается при пустом массиве compileStatus
_remaining = _env->GetArrayLength(params_ref) - offset;
if (_remaining < 1) {
_exception = 1;
_exceptionType = "java/lang/IllegalArgumentException";
_exceptionMessage = "length - offset < 1 < needed";
goto exit;
}

но посмотрев байткод, то там создается такой же массив как и в уроке на StartAndroid
int[] compileStatus = new int[1];
GLES20.glGetShaderiv(shaderId, 35713, compileStatus, 0);

хотел спросить, может кто сталкивался с такой проблемой? или просто заметил в моем коде нелепую ошибку, которую я пропустил

заранее спасибо за совет

п.с в час startAndroid писал, там бот затер мое сообщение, по этому пишу тут

п.с.с взял код с урока для шейдера, появилась подобная проблема(в моем коде на кт) только в другом месте и решилась с помощью intArrayOf(0), но моей изначальной проблеме - нет

оказалось что андроид просто решал не пересобирать билд, и когда появилось 2 файла - сработало

7 ответов

14 просмотров

Я свой старый код работы с шейдерами не стал переписывать с Java на Котлин. Работает - и ладно.

Попробуйте в glGetShaderiv передавать IntBuffer.wrap(compileStatus) вместо просто compileStatus.

NeProgram¡st- Автор вопроса

та у меня студия проект не хотела пересобирать

Поставьте её в угол!

NeProgram¡st- Автор вопроса

та стоило бы как я понял, у вас есть какой то опыт в работе с openGl, может посоветуете литературу или нормальные примеры(помимо startAndroid)

Все примеры искал сам в Гугле и сам разбирался со всеми косяками и глюками. Шейдеры - это жоппа, нужно все мозги перевернуть несколько раз, чтобы начать что-то понимать 😁

NeProgram¡st- Автор вопроса

понял, видимо и меня такое ждет, спасибо

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта