Android NDK OpenGL ES 2.0 Текстурный шаг - PullRequest
10 голосов
/ 14 июня 2011

Есть ли способ открыть текстуру в OpenGLES 2.0 с шагом, отличным от ее ширины. Обычно я исправляю это, используя PBO или настраивая GL_PACK_ROW_LENGTH через glPixelStore. Однако кажется, что ни GL_PIXEL_UNPACK_BUFFER для привязки буфера, ни GL_PACK_ROW_LENGTH не существует на платформе Android.

glTex (Sub) Image2D не поддерживает это.

Любые советы?

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Цитирование @ Хальсафар

В некоторых случаях это можно решить путем корректировки текстурных координат .


Допустим, у меня есть 512 x 512 текстура с высотой 512 * bitdepth

, но данные, которые я хочу использовать, имеют значение 256 * bitdepth

Я продолжаю и glSubTexImage2D все еще, но настраиваю координаты текстуры, чтобы они были 0 в (256/512)

вместо 0 до 1.

Другими словами удалить часть текстуры, которую я не использую .

1 голос
/ 26 ноября 2011

это может звучать немного излишне (или даже не совсем соответствовать вашим ожиданиям), но, возможно, вы могли бы просто воспользоваться растеризатором и объектами Frame-buffer: создайте FBO с текстурой в качестве цветового буфера и ... нарисуйте в ней несколько текстурированных квадов с помощью тривиального вершинного + фрагментного шейдера: где вы будете использовать простой Ortho. проецировать матрицу в вершинный шейдер и использовать точечную выборку текстуры в фрагментном шейдере.

0 голосов
/ 17 января 2012

Поскольку я ответил на это в комментарии, здесь есть более прямой ответ:

// width and height is 256 and max is 512
// texture coordinates
float uMax = (width / max);
float vMax = (height / max);

_texCoords[0] = 0.0; _texCoords[1] =  vMax;
_texCoords[2] = uMax; _texCoords[3] =  vMax;
_texCoords[4] = 0.0; _texCoords[5] =  0.0;
_texCoords[6] = uMax; _texCoords[7] =  0.0;

Теперь используйте эти текстовые координаты для рендеринга, и вы можете вставить текстуру 256x256 в буфер 512x512.Ширина и высота, которые вы хотите использовать, могут быть любого размера, равного или меньшего вашего максимального размера.

...