当前位置: 首页 > 知识库问答 >
问题:

用土壤加载嵌入的纹理

诸葛茂勋
2023-03-14

我用这个答案将我的图像嵌入到。exe:

使用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);

然而,纹理不加载,我只是得到一个白色的灰色表面。

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

    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电话。

共有1个答案

裴韬
2023-03-14

GL\u纹理\u最小\u过滤器默认为GL\u最近的\u MIPMAP\u线性​

上传一些mipmap或切换到GL_NEARESTGL_LINEAR

 类似资料:
  • 我可以加载725x483 jpg纹理,但不能加载725x544 代码: 我有错误:-VS2012 Express 我调试了SOIL一点,似乎错误是在我们调用glTexImage2D(在SOIL库中)之后出现的。 当我在加载代码中添加时,效果很好。 这个错误也发生在AMD(5570)和英特尔(HD 4000)上。

  • 检测土壤湿度 用法 案例:懒人浇花器 说明:通过土壤传感器检测土壤干湿度,如果土壤湿度过低则显示哭脸需要浇水;如果土壤湿度过高则显示笑脸表示无需浇水。 所需模块:智能电源、土壤传感器、LED面板。

  • 土壤湿度传感器模块用于检测土壤湿度。 净重量:17.2g 体积:24×24×14mm 参数 工作电压:DC 5V 抗跌落能力:1.5m 工作温度:-10℃~55℃ 工作湿度(模块):<95% 注意事项 土壤具备一定的腐蚀能力,请勿长期将土壤湿度传感器探头放在土壤中。

  • 土壤湿度传感器能够检测土壤中的水分湿度。 原理介绍 常见的土壤湿度传感器分为电容式和电阻式两种。电容式通过测量土壤湿度引起的电容的变化推测土壤的湿度,电阻式则是根据测量两个触点间的电阻大小来推测土壤湿度的大小。土壤湿度的严格定义上是土壤中水分所占质量的百分比,因此无论是电阻式或是电容式都无法准确地预估土壤中的含水量,而只能尽可能地做到读值与土壤中的含水量正相关。 mBuild 的土壤湿度传感器是电

  • 土壤湿度传感器能够检测土壤中的水分湿度。 原理介绍 常见的土壤湿度传感器分为电容式和电阻式两种。电容式通过测量土壤湿度引起的电容的变化推测土壤的湿度,电阻式则是根据测量两个触点间的电阻大小来推测土壤湿度的大小。土壤湿度的严格定义上是土壤中水分所占质量的百分比,因此无论是电阻式或是电容式都无法准确地预估土壤中的含水量,而只能尽可能地做到读值与土壤中的含水量正相关。 mBuild 的土壤湿度传感器是电

  • 所以我一直在为openGL课程玩土壤,我的项目遇到了一个奇怪的问题。我将显示两个窗口,每个窗口包含三个视口,在其中绘制一个带纹理的立方体或椭圆体,以展示我对深度和面剔除的理解。现在,所有形状都正确绘制,并且当单独测试时,它看起来完全符合预期,但是一旦我同时启用两个窗口,纹理就会在第一个窗口中禁用。我之前已经发布了类似的问题,所以只是为了澄清,如果我禁用窗口二,或者如果我在窗口二中使用窗口一绘制功能