簡體   English   中英

OpenGL 3.3:如何在傳遞到頂點和片段着色器之前實現解壓縮紋理數據

[英]OpenGL 3.3: How implement uncompressing texture data before passing to vertex and fragment shader

我從打包的相機中提取 12 位數據,因此 3 個字節定義了 2 個連續像素。

在將數據傳遞給頂點着色器進行進一步處理之前,有沒有辦法將它們解壓縮為兩個 16 位值?

這是這樣的想法:

  1. 將紋理復制到 PBO(像素緩沖區對象):

  2. 現在這個 PBO 可以被計算着色器使用,在那里可以執行解壓縮。

  3. 結果 PBO 可以復制回紋理。

要在 gpu 上進行此操作,您需要直接訪問緩沖區元素,而 opengl 3.3 沒有。 所以你只能用 310es、430 版本或 vulkan 來做到這一點。

也可以使用 cuda 或 OpenCL 解壓縮圖像。 在這種情況下,步驟 2 應替換為 cuda 或 OpenCL 例程。

另一個想法:

您可以將紋理加載為一個組件紋理,並在片段着色器中使用 texelFetch。 在這種情況下,您將直接訪問紋理緩沖區的字節。

暫無
暫無

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

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