土壤,NPOT纹理的问题

时间:2013-08-09 14:32:42

标签: c++ opengl soil

我可以加载 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)和英特尔(HD 4000)上。

1 个答案:

答案 0 :(得分:0)

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

  • 使用正确的GL_UNPACK_ALIGNMENT,默认情况下是4,但是当我将其更改为1时,它就有效了!
  • 或将数据格式从SOIL_LOAD_AUTO更改为SOIL_RGBAAUTO表示原始纹理格式,对于jpg图像,它是RGB,因此当解包对齐为4时可能会出现问题。
带有SOIL_FLAG_MIPMAP土壤的

实际上将图像重新调整为POT,这样解压缩对齐大小就没有问题。