Я использую прямой буфер Nio для Java, который держит пиксельные данные из растрового изображения и использует его на стороне NDK как текстуру gl. В принципе, я не умею правильно читать пиксели буфера Java nio в вызове gl/C++ gl draw.Android NDK gl с использованием Java nio bytebuffer для текстуры image
Представляется, что Java.ByteBuffer, который заполняется пикселей на стороне Java не совместим с НДК боковой GL, который требует байт без знака (Java байт-видимому, 32 бит)
так что один белый пиксель на Java сторона:
int size = 1;
ByteBuffer vv = ByteBuffer.allocateDirect(size_t*4);
vv.order(ByteOrder.nativeOrder());
vv.put((byte)255); // R
vv.put((byte)255); // G
vv.put((byte)255); // B
vv.put((byte)255); // A
vv.position(0);
... //code to send the buffer address to JNI/NDK gl side
... //
будет нарисовано на стороне NDK как черный пиксель;
Я понимаю, что фактическое значение байта без знака этого буфера может быть отрицательным - как я могу исправить это. Кроме того, мне нужно будет преобразовать байт [], который представляет собой данные изображения, полученные из битмапа на стороне Java, которые будут использоваться в текстуре стороны NDK после решения этой проблемы.
Заранее благодарен!
Сделайте шестнадцатеричный дамп буфера из вашего собственного кода, чтобы убедиться, что данные на нем фактически добираются. – fadden