簡體   English   中英

使用OpenGL進行圖像處理-設置OpenGL上下文

[英]Using OpenGL for Image Processing - Setting up an OpenGL context

我想對原始圖像進行圖像處理而不將其顯示在屏幕上(我想根據圖像數據進行一些計算,並根據這些計算在屏幕上顯示一些結果。)我找到了這個問題的有趣答案,如下所示:

在GPU上進行實際處理:設置OpenGL上下文(OpenGL ES 2教程),並在該上下文中創建SurfaceTexture對象。 然后將該對象傳遞給setPreviewTexture,然后開始預覽。 然后,在OpenGL代碼中,可以調用SurfaceTexture.updateTexImage,與SurfaceTexture關聯的紋理ID將更新為相機的最新預覽幀。 如果需要,還可以使用glReadPixels將RGB紋理數據讀回CPU,以進行進一步處理。

我有一個關於如何實施它的問題。

我是否需要創建GLSurfaceViewRenderer ,實際上我不想使用OpenGL在屏幕上繪制任何東西,所以不確定是否需要它們? 從我在線閱讀的內容來看,為了設置OpenGL上下文而擁有這些內容似乎非常重要? 有人可以給我任何指示嗎?

不必使用 GLSurfaceView GLSurfaceView是一個純粹用Java編寫的便利類。 它簡化了想要在Android中使用OpenGL渲染的應用程序的設置部分,但其所有功能也可以通過Android框架中的較低級接口使用。

對於純屏幕外渲染,您可以使用EGL接口創建上下文,表面等。有些令人困惑的是,Android框架的完全不同的部分有兩個版本:

  • 從API級別1開始提供的javax.microedition.khronos.egl軟件包中的EGL10EGL11
  • android.opengl包中的EGL14 ,自API級別17起可用。

它們相當相似,但是較新的EGL14顯然具有更多功能。 如果您的目標至少是API級別17,那么我會選擇較新的版本。

然后,使用EGL14類中的方法,您可以創建上下文,表面等。對於屏幕外渲染,一種選擇是創建用於渲染的Pbuffer表面。 要完成設置,通常將使用以下功能:

eglInitialize
eglChooseConfig
eglCreatePbufferSurface
eglCreateContext
eglMakeCurrent

Android文檔並未真正描述這些功能,但是您可以在Khronos網站上找到實際的文檔: https : //www.khronos.org/registry/egl/sdk/docs/man/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM