[英]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.