1

我可以加载725x483 jpg 纹理,但不能加载 725x544

编码:

texId = SOIL_load_OGL_texture(fileName, SOIL_LOAD_AUTO, 
                              SOIL_CREATE_NEW_ID, 0);

我收到错误: Access violation reading location 0x06851002-VS2012 express

我对 SOIL 进行了一些调试,似乎在我们调用 glTexImage2D(在 SOIL 库中)之后就出现了错误。

当我添加SOIL_FLAG_MIPMAP到加载代码时,它工作正常。

此错误也出现在 AMD (5570) 和 Intel (HD 4000) 上。

4

1 回答 1

0

解决了,但我认为值得一提的解决方案:

  • 使用正确的GL_UNPACK_ALIGNMENT,默认为 4,但是当我将其更改为 1 时,它起作用了!
  • 或将数据格式从 更改SOIL_LOAD_AUTOSOIL_RGBAAUTO表示原始纹理格式,对于 jpg 图像它是 RGB,因此当解包对齐为 4 时可能会出现问题。

土壤实际上将SOIL_FLAG_MIPMAP图像重新缩放为 POT,这样解包对齐大小就没有问题。

于 2013-08-10T08:36:24.580 回答