簡體   English   中英

在GL_TEXTURE_CUBE_MAP中具有不同分辨率的面

[英]Faces with different resolutions in GL_TEXTURE_CUBE_MAP

我在openGl中創建了一個Cube,我需要提供6個不同分辨率的紋理。 目前我正在使用glTexImage2D來提供具有相同分辨率的紋理,但顯然不能用於我的新目的。

下面的代碼與我使用相同分辨率(只是亮度通道)的每個面所做的類似:

glGenTextures(3, m_cubemapTexture);
glPixelStorei(GL_UNPACK_ROW_LENGTH, cube_size);

glBindTexture(GL_TEXTURE_CUBE_MAP, m_cubemapTexture[0]);

for (int face = 0; face < 6 face++){    
    glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, 0, GL_LUMINANCE, cube_size, cube_size, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, m_uYdata[face]);
}

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_BORDER);

glBindTexture(GL_TEXTURE_CUBE_MAP, 0);

編輯

我認為使用mipmap不是正確的方法,因為我不能簡單地用更高的分辨率對紋理進行下采樣。 如果我只是改變glTexImage2D()中的寬度和高度以獲得更高分辨率的紋理,那么立方體就會消失。

你能建議我怎么改變代碼?

6種不同分辨率的紋理

在立方體貼圖中不允許這樣做。 每個立方體貼圖面必須具有相同的大小。 並且必須是一個正方形(雖然不一定是兩個權力)。

否則,紋理將不被視為完整,因此使用它將無法訪問數據。 因此消失了。

要求所有這些面都使用這種全尺寸紋理而不縮小它們。

然后升級其他面孔。

我在openGl中創建了一個Cube

如果你正在做的只是繪制一個立方體,你不需要使用立方體貼圖。 盡管有名稱,顯示立方體不是立方體貼圖紋理的用途。

根據您的需要,您所要做的就是使用常規的2D紋理貼圖,每個面都分配給常規2D紋理的區域。 您收到的6個“面”中的每一個都應該復制到2D紋理的相應區域中。 因此,立方體的每個面將顯示其2D紋理的特定區域。

暫無
暫無

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

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