Android NDK OpenGL ES 2.0 Шаг текстуры

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

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

Какие-нибудь советы?

Solutions Collecting From Web of "Android NDK OpenGL ES 2.0 Шаг текстуры"

Цитирование @ Halsafar

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


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

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

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

Вместо 0 к 1 .

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

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

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

 // 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; 

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