Есть два способа использования OpenGL, чтобы показать эти пиксели данные
Использование OpenGL в JAVA
Использования OpenGL в C или C++ (JNI)
На самом деле, в любом случае, будет легко, если вы знаете, что такое трубопровод opengl
Я всегда с нами е OPENGL с C++ из-за многократного использования в любом случае, только три шага ниже
сделать изображение текстуры с помощью буфера предварительного просмотра с андроида API (пиксель представляет собой указатель, который указывает на буфер кадров камеры)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture_width, texture_height, 0,GL_RGBA, GL_UNSIGNED_BYTE, pixel);
передать текстуру шейдера
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, m_TextureMain);
glUniform1i(textures[0][displayMode], 0);
процесс текстуре на frament шейдера (texutre0 является то, что мы только что сделали и этот код процесса я т в черно-белое изображение)
static char grayscale[] =
"precision highp float; \n"
"uniform sampler2D texture0;\n"
"varying vec2 textureCoordinate;\n"
"void main()\n"
"{\n"
" float grayValue = dot(texture2D(texture0, textureCoordinate), vec4(0.3, 0.59, 0.11, 0.0));\n"
" gl_FragColor = vec4(grayValue, grayValue, grayValue, 1.0);\n"
"}\n";
я пропустил много шагов, которые требуются в OpenGL, потому что это слишком долго, такие как связывание, генерировать видеобуфер, а renderbuffer, настройки шейдеров и скомпилировать его и как сделать двойную буферизацию чтобы избежать щелчка. Если вы не знаете, что это такое, найдите пример и измените три шага.
Вы хотите, чтобы вы делали данные текстуры в png или другом формате? – Sung
@SungWoo: Как и пример кода, предварительный просмотр камеры будет отображаться непосредственно на SurfaceTexture. Но теперь я хочу прочитать данные предварительного просмотра с камеры и сделать некоторый процесс для фрейма, а затем показать обработанные данные в SurfaceTexture. Как читать данные предварительного просмотра камеры и как отображать обработанные данные? – user3331791
Я понял! проверьте мое сообщение ниже – Sung