2013-04-13 3 views
1

я в настоящее время рендеринга сцены, используя треугольники со следующим кодом:OpenGL ES, ИОС и вентиляторы треугольник

 glBindVertexArrayOES(_mVertexArrayObjectTriangles); 
     glBindBuffer(GL_ARRAY_BUFFER, _mVertexPositionNormalTriangles); 
     glDrawElements(GL_TRIANGLES, _mCRBuffer->GetIndexTriangleData()->size(), GL_UNSIGNED_INT, 0); 
     glBindBuffer(GL_ARRAY_BUFFER, 0); 
     glBindVertexArrayOES(0); 

_mVertexArrayObjectTriangles моя вершина объект массив, содержащий элементы, чтобы быть оказаны с помощью треугольников

_mVertexPositionNormalTriangles является моим массив вершин и вершинных нормалей

_mCRBuffer-> GetIndexTriangleData() - это мой массив индексов в массив вершин. Это простой массив целых чисел, которые кодируют каждый треугольник (a, b, c, a, b, d будут кодировать два треугольника abc и abd).

Все работает отлично, но я бы хотел, чтобы мои примитивы использовали треугольные вентиляторы вместо треугольников. Как создать массив вентиляторов треугольника (т.е. более, что один), который можно сделать, используя что-то вроде

glDrawElements(GL_TRIANGLE_FAN, .... 

Как настроить мой индекс массива индексировать набор вентиляторов треугольник для рендеринга (jnstead треугольников) , Вершины сами по себе не должны меняться, просто индексы, чтобы визуализировать их, используя треугольники, вместо треугольников.

Я могу найти хорошие примеры с использованием треугольных полос (here), в том числе о том, как настроить индексный массив, но ничего не на вентиляторах треугольника.

ответ

1

Переход от полосы к вентилятору является нетривиальным, так как ваши данные должны быть настроены соответствующим образом. Вы должны иметь центральную вершину, из которой все остальные треугольники исходят

enter image description here

Если вы решите это сделать, вам просто нужно заказать вершины так, как показано на рисунке, и убедитесь, что вы делаете это в кусках вершин, имеющих общую вершину.

+0

Да, я пришел к такому же выводу. Обманите рендеринга в принимающих треугольных вентиляторах. +1 за отличное объяснение - спасибо! –