簡體   English   中英

在OpenGL中使用ByteBuffer作為紋理

[英]Using ByteBuffer as a Texture in OpenGL

我正在開發應將視頻數據流傳輸到OpenGL(ES2)的應用程序。 對於視頻的每一幀,我可以得到一個包含所有數據的ByteBuffer。 我想一種方法是將其轉換為OpenGL紋理,然后在OpenGL中使用sampler2D。 但是,感覺就像我已經有了ByteBuffer一樣,將數據發送到具有寬度和高度的OpenGL並以某種方式從着色器中讀取像素數據會更有效。 該應用程序將僅以2D方式顯示視頻,但應使用片段着色器對數據進行操作。

我的問題是OpenGL是否內置任何東西可以簡化此操作(即使用ByteBuffer數組作為紋理)? 是否可以在ByteBuffer數組上使用sampler2D或等效方法?

“但是,感覺就像我已經獲得了ByteBuffer” -知道了,但是OpenGL沒有。 因此,您必須某種方式將這些數據放入紋理中。 OpenGL無法使用任意CPU數據進行紋理處理。

但是,您可以通過將視頻幀直接放入映射的PBO(如果ES支持它們)而不是ByteBuffer(如果在您的框架內甚至可以),然后將其從此PBO復制到紋理中來流式傳輸,這可能會買到您一些東西。 但是無論如何,您必須調用glTexSubImage2D (並確保不要忘記其中的Sub ,否則您將在每個幀中重新分配整個紋理存儲)。

暫無
暫無

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

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