Ищете альтернативу glTexSubImage2d с поддержкой смещения данных - PullRequest
6 голосов
/ 28 февраля 2012

У меня есть PBO, который обновляется каждый кадр CUDA. После этого я также хочу обновить текстуру, используя эту PBO, что я делаю, используя glTexSubImage2d. Я боюсь, что обновление всей текстуры стоит дорого, и я хотел бы обновить только видимую область текстуры, в то время как в моем PBO есть все данные.

Проблема в том, что, хотя glTexSubImage2d принимает смещение, ширину и высоту в качестве параметров, они используются только при рисовании на текстуру, в то время как мне все еще нужны данные моего буфера для линейного размещения. Боюсь, сама подготовка данных буфера может быть слишком дорогой (на самом деле это будет очень дорого, поскольку мой PBO находится в памяти GPU).

Есть ли альтернатива glTexSubImage2d, которая также принимает параметры для смещения буфера, или я должен продолжать обновлять всю текстуру сразу?

Ответы [ 2 ]

7 голосов
/ 28 февраля 2012

Пожалуйста, ознакомьтесь с параметрами хранилища пикселей, установленными с помощью glPixelStore . Параметры GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_PIXELS и GL_UNPACK_SKIP_ROWS наиболее интересны для вас:

Pixel Store Parameters

Эти значения предоставлены для удобства программиста; они не предоставляют никакой функциональности, которую нельзя дублировать, увеличивая указатель, передаваемый glDrawPixels, glTexImage1D, glTexImage2D, glTexSubImage1D, glTexSubImage2D, glBitmap или glPolygonStipple. Установка GL_UNPACK_SKIP_PIXELS в i равносильна увеличению указателя на i компонентов или индексов, где n - количество компонентов или индексов в каждом пикселе. Установка GL_UNPACK_SKIP_ROWS в j равносильна увеличению указателя на j ⁢ k компонентов или индексов, где k - количество компонентов или индексов на строку, как только что вычислено в разделе GL_UNPACK_ROW_LENGTH.

Вы по-прежнему будете использовать glTexImage и / или glTexSubImage для передачи данных.

1 голос
/ 18 февраля 2013

glTexSubimage2D имеет ошибки при получении данных из PBO, если выбранная область интереса в текстуре не равна всему размеру текстуры. Это известная проблема, которая не может быть исправлена ​​(например, ветка форума opengl ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...