gpt4 book ai didi

c - 使用 SOIL 加载嵌入的纹理

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:12 28 4
gpt4 key购买 nike

我正在使用这个答案将我的图像嵌入到 .exe 中:

Embedding resources in executable using GCC

这是我的代码的相关部分:

GLuint grass_DTexture;

extern char binary_grass_D_bmp_start[];
extern char binary_grass_D_bmp_size[];

short loadTexture(char *imageData[], GLuint *texture) {
*texture = SOIL_load_OGL_texture_from_memory(imageData, sizeof(*imageData), SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y | SOIL_FLAG_COMPRESS_TO_DXT);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

return 1;
}

loadTexture(&binary_grass_D_bmp_start, &grass_DTexture);

但是纹理没有加载,我只是得到一个发白的灰色表面。

编辑:我知道这不是我最初的问题,但是我在使用 mipmap 时遇到了困难。我将 loadTexture 函数修改为: short loadTexture(char *imageData[], GLuint *texture, int width, int height) { glEnable(GL_TEXTURE_2D); glGenTextures(1,纹理); glBindTexture(GL_TEXTURE_2D, *纹理);

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

*texture = SOIL_load_OGL_texture_from_memory(imageData, sizeof(*imageData), SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y | SOIL_FLAG_COMPRESS_TO_DXT | SOIL_FLAG_MIPMAPS);

//gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, imageData);

//glTexStorage2D(GL_TEXTURE_2D, 3, GL_RGBA8, width, height);
//glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_BGRA, GL_UNSIGNED_BYTE, imageData);
//glGenerateMipmap(GL_TEXTURE_2D);

glDisable(GL_TEXTURE_2D);
return 1;
}

这次exe一运行就崩溃了。我也收到以下警告,这可能是造成这种情况的原因(可能在某处缺少 * 或 &):

init.c:76:2: warning: passing argument 1 of 'loadTexture' from incompatible poin
ter type [enabled by default]
loadTexture.h:1:7: note: expected 'char **' but argument is of type 'char (*)[]'

我已经设法将崩溃范围缩小到 SOIL_load_OGL_texture_from_memory 调用。

最佳答案

GL_TEXTURE_MIN_FILTER 默认为 GL_NEAREST_MIPMAP_LINEAR

Upload some mipmaps or switch to GL_NEAREST or GL_LINEAR .

关于c - 使用 SOIL 加载嵌入的纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17632301/

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