По сути, у меня есть два textureId, один в качестве ввода и один в качестве вывода, с шириной и высотой.Все, что мне нужно сделать, - это получить доступ к входной текстуре GL с помощью OpenCV, скажем, выполнить задачу обнаружения объекта, а затем передать содержимое на выходную текстуру GL.Итак, какой самый быстрый способ сделать это?
Мне удалось решить проблему, создав переменную Mat и заполнив данные беззнаковым символом char * с помощью glReadPixels, но, как вы знаете, этот метод слишком медленный.
Есть ли способ выполнить ту же задачу?Вы можете думать вне общего маршрута.Как, например, использование OpenCL с cl :: ImageGL, если это возможно, или что-то еще, что должно поддерживаться на Android.Кто-то также предложил мне использовать pbos, но я не понимал, как применить их к этому проекту.
Для тех, кто может нуждаться / хочет получить источник или просто просто лучше знает, о чем я говорю, вотисточник:
void testProgram(JNIEnv* env, jnit texIn, jint texOut, jint w, jint h){
static cv::Mat mat;
mat.create(h, w, CV_8UC4);
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, mat.data);
//glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texOut);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, mat.data);
}
Любому, кто скажет, что это дубликат другого вопроса: не могли бы вы дать мне совет, прежде чем пометить его как дубликат?Я проверил, прежде чем поставить этот вопрос, поэтому я не могу объяснить, что я ищу.Я хочу исправить вопрос, если смогу.
Я ищу более чем один способ сделать это, просто чтобы выполнить тест производительности.