[英]OpenGL 3.3: How implement uncompressing texture data before passing to vertex and fragment shader
我從打包的相機中提取 12 位數據,因此 3 個字節定義了 2 個連續像素。
在將數據傳遞給頂點着色器進行進一步處理之前,有沒有辦法將它們解壓縮為兩個 16 位值?
這是這樣的想法:
將紋理復制到 PBO(像素緩沖區對象):
現在這個 PBO 可以被計算着色器使用,在那里可以執行解壓縮。
結果 PBO 可以復制回紋理。
要在 gpu 上進行此操作,您需要直接訪問緩沖區元素,而 opengl 3.3 沒有。 所以你只能用 310es、430 版本或 vulkan 來做到這一點。
也可以使用 cuda 或 OpenCL 解壓縮圖像。 在這種情況下,步驟 2 應替換為 cuda 或 OpenCL 例程。
另一個想法:
您可以將紋理加載為一個組件紋理,並在片段着色器中使用 texelFetch。 在這種情況下,您將直接訪問紋理緩沖區的字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.