Проблема текстурирования OpenGL - PullRequest
1 голос
/ 21 июля 2010

Я работал над кроссплатформенным 3D-движком, но у меня есть версия, работающая изначально на OSX и iPhone / iPad (которая в Simulator использует библиотеку системы GL).Проблема, с которой я сталкиваюсь, заключается в том, что каждая текстура слегка смещена в обоих направлениях (выглядит примерно как одно смещение текселя), и я бы посмотрел больше в своем коде, если бы не увидел ту же проблему в Blender3D - после генерации некоторых световых карт это сталоболее заметен на цветных градиентах.Файлы текстур в порядке и одинаковые текстурные координаты (которые охватывают только весь квад).

Вот пример того, как это выглядит в blender (текстовые координаты для 2-треугольников для углов в диапазоне (0.0, 0.0) - (1.0, 1.0)): http://i28.tinypic.com/2yllfr5.png

Вы можете видеть справа и вверх края помеченного квада, заполненные неправильными текселями.

Есть идеи, как обойти это?Я использую OSX 10.6, обновлена ​​до последней версии.

1 Ответ

4 голосов
/ 21 июля 2010

Проблема решена.Для тех, кто найдет артефакты после текстурирования геометрии на краях текстуры, ответ может оказаться полезным.Это происходит по двум причинам:

  • GL_TEXTURE_WRAP_S и GL_TEXTURE_WRAP_R по умолчанию устанавливаются в GL_REPEAT
  • , если вы установите GL_CLAMP в параметре tex, тогда он будет смешиваться с границей вне области текстуры начетыре ребра (по умолчанию черный).

Решение простое, для GL_TEXTURE_WRAP_S и GL_TEXTURE_WRAP_T вы должны использовать GL_CLAMP_TO_EDGE, который ограничивает текстурные координаты до 0,0 + 0,5 и 1,0-0,5, что дает поле 0,5 текселейна каждой стороне текстуры.

Я надеюсь, что это поможет другим, кто найдет похожую проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...