2013-11-09 32 views
0

我想在OpenGL中使用立方體貼圖設置陰影貼圖,所以我可以爲點光源做陰影。OpenGL glTexImage2D立方體貼圖和寬度/高度參數

下面我拋出一個GL_INVALID_ENUM

for (uint32_t i = 0; i < 6; i++) 
    GLCALL(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_DEPTH_COMPONENT32, windowWidth, windowHeight, 0, GL_DEPTH_COMPONENT32, GL_FLOAT, 0)); 

根據該文檔,這是因爲這大概是:

GL_INVALID_ENUM is generated if target is one of the six cube map 2D image targets and the width and height parameters are not equal. 

而且我得到,如果寬度/高度是不同的,他們並不是真正的立方體,但是當我擁有像1920x1080或其他分辨率的屏幕分辨率時,這是一個問題。

也許雖然我missunderstod什麼提供給函數調用 - 是不是窗口寬度/高度?應該是什麼參數?

回答

1

也許雖然我missunderstod什麼提供給函數調用 - 是不是窗口的寬度/高度?

如何在世界中認爲窗口分辨率影響紋理尺寸超出了我的想象。您通常使用幀緩衝區對象來渲染陰影映射深度圖,因此窗口尺寸無關緊要。

應該是什麼參數?

對於立方體貼圖:立方體貼圖貼圖的邊長。

+0

framebuffer存儲將在屏幕上呈現的最終圖像(彩色地圖?),因此不應該使紋理大小與窗口分辨率一致嗎?另外,如果不是什麼樣的值適合立方體貼圖紋理的大小? – KaiserJohaan

+0

@KaiserJohaan:沒有*幀*緩衝區。有* a *窗口framebuffer(與窗口大小),然後有用戶定義,屏幕外的幀緩衝區對象,並且您選擇哪個大小。不,即使紋理稍後可能會呈現在屏幕上(不一定會發生),它可能會在很大程度上被扭曲或被放大或縮小。所以不,在紋理大小和窗口大小之間絕對沒有強制的對應關係。至於陰影貼圖:紋理大小是任意的,並且僅取決於您對質量的要求:更高的陰影紋理分辨率=更高的質量 – datenwolf