2014-09-04 43 views
0

如果我創建兩個紋理作爲 1. srcID 2. destID如何使用glCopyImageSubData和GL_TEXTURE_CUBE_MAP紋理?

的兩種類型GL_TEXTURE_CUBE_MAP

glTexStorage2D(GL_TEXTURE_CUBE_MAP,6,GL_RGBA8,32,32);

現在「srcID」填充了所有需要的紋理數據。 那麼使用哪些參數來將整個「srcID」複製到「destID」。 嘗試了很多組合,但它總是給錯誤。

回答

1

這是未經測試,並且純粹從學習手冊頁和規範文件:

glCopyImageSubData(srcID, GL_TEXTURE_CUBE_MAP, 0, 0, 0, 0, 
        destID, GL_TEXTURE_CUBE_MAP, 0, 0, 0, 0, 
        32, 32, 6); 

最低明顯的部分是如何指定要複製所有的立方體貼圖面。該規範說明了目標參數:

接受所有非代理紋理目標,TEXTURE_BUFFER和表8.19中描述的立方體貼圖選擇器除外。

這告訴我GL_TEXTURE_CUBE_MAP必須用於那些參數,而不是特定的面。

那麼如何指定要複製所有6分立方體貼圖的面孔,這部分是相關的(重點由我加的):

一個一維數組,二維數組,立方體的

片圖陣列,或三維紋理或面的立方圖質感都兼容,只要它們共享一個兼容的內部格式,和多個切片或面可以通過指定被複制這些對象與單個呼叫之間與srcZ和dstZ,和用srcDepth複製的切片數量。 根據表8.19中指定的順序,Cubemap紋理總是有六個面,這些面由基於零的人臉索引選擇。

所以複製所有6個面應該用0 srcZdstZ,和6 srcDepth工作。