在OpenGL中使用Cubemaps的两个纹理的非幂

时间:2013-06-02 15:21:24

标签: opengl textures viewport cubes

我正在尝试构建一些东西,但我不认为这是可行的。 是否可以在OpenGL中使用立方体贴图附加两个图像的非幂?我正在使用:

for(int k = 0; k < 6; k++){
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + k, 0, GL_RGBA32F, 
m_iWidth, m_iHeight, 0, GL_RGBA, GL_FLOAT, NULL);
//other code
}

如果m_iWidthm_iHeight的值是NPOT,那么显然它不起作用。 有没有办法做到这一点?我的目标是在大小上动态制作环境贴图(取决于视口)。

绑定和参数为GL_TEXTURE_CUBE_MAP。其他细节:这不是OpenGL ES或希望兼容性; - )

1 个答案:

答案 0 :(得分:2)

Cubemaps的大小不一定是2的幂,但它们必须是 square 。所以它们的大小不能“取决于视口”。而且他们也没有理由。

如果您正在尝试制作环境贴图,则纹理的大小不应取决于渲染图像的确切大小。您可能希望以更高的分辨率扩展纹理,但不希望环境贴图与目标图像大小匹配。