Войти
ПрограммированиеФорумГрафика

Вопрос по наложению текстуры на объект при использовании индексов в OpenGL

#0
2:38, 2 дек. 2015

Уважаемые ГамеДевцы, подскажите решения задачи связанное с текстурированием.

Ситуация №1
Есть куб который создаётся из 8 вершин и 24 индексов. Текстурные координаты привязываются к вершинам(если не ошибаюсь). Текстура предполагается 6 в 1(атлас вроде называется).
Данные:
  float vert[]={0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,1,0,1,1,1,0,1,1};
  unsigned char index[]={0,1,2,3,4,7,3,0,6,5,1,2,5,4,0,1,7,6,2,3,4,5,6,7};
  float text[]={1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1};//Есть сильные погрешности.
  glVertexPointer(3,GL_FLOAT,0,vert);
  glTexCoordPointer(2,GL_FLOAT,0,text);
  glDrawElements(GL_QUADS,24,GL_UNSIGNED_BYTE,&index);
Вопрос:
Как и с чем привязать координаты текстуры, чтоб на каждой стороне отобразилась своя часть текстуры(напоминаю, в одной текстуре 256х1536 хранится  текстур(атлас вроде называется))?
Или же не использовать индексы для построения куба?

Ситуация №2
Допустим есть обычный ландшафт состоящий из треугольников, в котором ключевые точки вершины(х,у,z). При его построении использовать индексы? в качестве оптимизации+меньшее количество вершин(данных). Если да тогда как накладывается на него ландшафтная текстура?

Или же есть другие способы/методы текстурирования?


#1
5:34, 2 дек. 2015

Всё что неодинаково имеет разные индексы. Тоесть если у куба все точки разные(разные нормали, текстурные координаты) то смысла в индексах нет.

#2
11:33, 2 дек. 2015

ТСу нужно почитать, что такое группы сглаживания.

#3
12:24, 2 дек. 2015

Хм, тогда к примеру взять мир в Minecraft, а точнее огромную площадь с горами состоящую из разнообразных блоков, как же тогда быть?, создавать 2 больших массива вершин и текстурных координат(в котором текстурные данные одинаковы для всех кубов)в которых находится вся геометрия и помещать в  glVertexPointer/glTexCoordPointer и отображать с помощью glDrawArrays. Оптимально ли так делать? или же есть более лучшие решения/методы?

ПрограммированиеФорумГрафика

Тема в архиве.