2015-06-05 37 views
1

我想從六個現有紋理創建立方體貼圖。紋理視圖似乎是爲了這樣的事情做的,當原始紋理改變時也更新立方體貼圖。但是,立方體貼圖只能是紋理陣列(或其他立方體貼圖)的視圖,並且我找不到任何方式使用glTextureView來填充具有多個已有2D紋理的陣列,因爲glTextureView只能與未初始化的紋理一起使用。使用現有2D紋理和glTextureView初始化立方體貼圖

有沒有辦法做到這一點或通過FBO繪製到立方體貼圖的唯一途徑?

+0

看,有可能是一種方式,但由於問題是目前寫的,它不太可能收到答案。你能詳細說明嗎? –

+0

此外,如果有幫助,請參閱[問]並參加[導遊]。 –

+0

感謝編輯,英語不是我的強項,它確實有幫助。 –

回答

2

不,我不相信這是支持的。您不能將多個紋理「合併」爲單個紋理而不進行任何複製。

我能想到的,你有幾個選擇:

  • 理想的解決方案是,而不是使用單獨的紋理當然您將數據轉換成立方體貼圖面對擺在首位的。請注意,gTextureView()支持相反的方向。如果部分想要將紋理用作常規的GL_TEXTURE_2D,並且部分用作立方體貼圖的面部,則可以將其存儲在立方體貼圖面中,然後創建紋理視圖以將面部視爲需要的2D紋理。

  • 將紋理複製到立方體貼圖面中。最有效的方法應該是使用glBlitFramebuffer()。當然,複製數據總是不受歡迎的,但有時候這是必要的。

  • 這可能有點不合常規,但是你可以......不使用立方體貼圖。您可以在着色器中使用6個獨立的採樣器,並將要用作立方體面的6個紋理綁定到這些採樣器。然後,您可以在着色器代碼中決定要採樣的六種紋理中的哪一種,以及要使用哪種紋理座標。如果您在抽取立方體貼圖時查找引擎蓋下使用的邏輯/數學運算,這應該不會太困難。