gpt4 book ai didi

opengl - 如何在 OpenGL 3.2 中使用 GL_TEXTURE_2D_ARRAY

转载 作者:行者123 更新时间:2023-12-01 04:02:43 26 4
gpt4 key购买 nike

所以我尝试关注 docs ,但是我似乎无法让纹理二维数组工作。

-(GLint)buildTextureArray:(NSArray *)arrayOfImages
{
GLImage *sample = [GLImage imageWithImageName:[arrayOfImages objectAtIndex:0] shouldFlip:NO]; //Creates a sample to examine texture width and height
int width = sample.width, height = sample.height;
GLsizei count = (GLsizei)arrayOfImages.count;

GLuint texture3D;
glGenTextures(1, &texture3D);
glBindTexture(GL_TEXTURE_2D_ARRAY, texture3D);

glPixelStorei(GL_UNPACK_ROW_LENGTH, width);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA8, width, height, count, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);

int i = 0;
for (NSString *name in arrayOfImages) //Loops through everything in arrayOfImages
{
GLImage *image = [GLImage imageWithImageName:name shouldFlip:NO]; //My own class that loads an image
glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, i, image.width, image.height, 1, GL_RGBA, GL_UNSIGNED_BYTE, image.data);
i++;
}
return texture3D;
}

//Setting Uniform elsewhere
glBindTexture(GL_TEXTURE_2D_ARRAY, textureArray);
glUniform1i(textures, 0);


//Fragment Shader
#version 150

in vec3 texCoords;

uniform sampler2DArray textures;

out vec3 color;

void main()
{
color = texture(textures, texCoords.stp, 0).rgb;
}

我能够加载具有相同纹理参数的单个纹理,但我无法让它与纹理 2D 数组一起使用。我得到的只是黑色纹理。为什么会这样?

最佳答案

glTexParameteri(GL_TEXTURE_2D_ARRAY,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);

您的纹理实际上没有 mipmap。所以不要再告诉 OpenGL 了。

另外, 总是 设置 mipmap range parameters ( GL_TEXTURE_BASE_LAYER and GL_TEXTURE_MAX_LAYER )为您的纹理。或者更好的是,使用 texture storage to allocate your texture's storage ,它会为你做的。

关于opengl - 如何在 OpenGL 3.2 中使用 GL_TEXTURE_2D_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com