ПОЧВА, проблемы с текстурами NPOT

Я могу загрузить текстуру 725x483 jpg, но не 725x544

код:

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

Я получил ошибку: Access violation reading location 0x06851002 - экспресс VS2012

Я немного отладил SOIL, и кажется, что ошибка возникает сразу после вызова glTexImage2D (в библиотеке SOIL).

Когда я добавляю SOIL_FLAG_MIPMAP в код загрузки, он работает нормально.

Эта ошибка была и на AMD (5570) и Intel (HD 4000).


person fen    schedule 09.08.2013    source источник


Ответы (1)


Решено, но думаю стоит упомянуть решение:

  • используйте правильный GL_UNPACK_ALIGNMENT, по умолчанию это 4, но когда я изменил его на 1, это сработало!
  • или измените формат данных с SOIL_LOAD_AUTO на SOIL_RGBA. AUTO означает исходный формат текстуры, а для изображений jpg это RGB, поэтому могут возникнуть проблемы, если выравнивание распаковки равно 4.

с SOIL_FLAG_MIPMAP грунт фактически масштабирует изображение в POT, и таким образом нет проблем с размером выравнивания при распаковке.

person fen    schedule 10.08.2013