用于纹理阵列的opengl glTexSubImage



对于1D和2D纹理,我们有一个单独的图像,为了在特定的mipmap上获得图像,我们可以调整级别参数

但是对于1D和2D阵列,即使文档指定您可以使用这些阵列标志作为有效参数,他们也没有告诉我们如何使用它从1D和二维阵列读取图像

假设我指定一个5 的mipmap级别

by using
glTexParameteri(GL_TEXTURE_1D_ARRAY,GL_TEXTURE_BASE_LEVEL,0);
glTexParameteri(GL_TEXTURE_1D_ARRAY,GL_TEXTURE_MAX_LEVEL,5);

我使用自动生成mipmap

glGenerateMipmap(GL_TEXTURE_1D_ARRAY);

我的texture1D阵列有5个1D图像,这将给我5*5=25个图像[阵列中每个图像的5个mip映射级别]

如何在特定数组中读取图像索引&使用glGetTexImage((的mipmap级别?假设我想读取阵列中第二个图像的第三个mip映射级别,我该怎么做?

1D阵列纹理基本上是2D纹理,而当涉及到为您提供x、y、z偏移和宽度、高度、深度参数的OpenGL API函数时,2D阵列纹理基本是3D纹理。

因此,为了访问1d阵列纹理上第八个阵列层的第四个mip级别,从x偏移=50 texel开始,读取800 texel宽的行,您将使用以下调用:

glGetTextureSubImage(
texture,
3,  // <- we want the fourth mip-level
50, // <- there, we want to start at x-offset = 50 texels
7,  // <- we want the eighth array layer
0,  // <- irrelevant for 1D array textures
800,// <- we want to read 800 texels (starting from 50)
1,  // <- we want 1 array layer
1,  // <- must use 1
format,
type,
bufSize,
pixels)

最新更新