2012-06-14 3 views
4

В cocos2d-iphone проекция по умолчанию - это «3D» проекция. Но вы также можете установить проекцию на «2D», как так:Каковы веские причины для 2D-проекции с cocos2d-iphone?

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D]; 

За кулисами проекция 3D использует перспективную проекцию, тогда как 2D проекция орфографический проекции OpenGL. The technical details about these two projection modes can be reviewed here, это не, что я заинтересован в.

Каковы преимущества и недостатки 2D-проекции для cocos2d пользователей? Каковы веские причины для перехода на 2D-проекцию?

Лично я использовал 2D-проекцию, чтобы использовать глубинную буферизацию для изометрических фрагментов. Изометрические tilemaps требуют этого для правильного упорядочения z плиток и объектов на tilemap.

Я также использовал 2D-проекцию с буферизацией глубины в проектах, не связанных с tilemap, чтобы получить полный контроль порядка z через свойство vertexZ. В этом проекте использовалось псевдо-изометрическое отображение, где вершина Z объекта основана на его координате Y.

Это означает, что я использовал 2D-проекцию только для использования свойства vertexZ, что также требует включения буферизации глубины. Есть ли другие причины, по которым вы захотите переключиться на 2D-проекцию?

+0

Спасибо, что задали этот вопрос. – johnbakers

ответ

1

Я переключился на 2D-проекцию как единственное средство разрешения проблем с отображением шрифтов с помощью CClabels, как с файлами шрифтов, так и с основами TTF. Это не всегда является причиной проблемы с шрифтом, но он разрешил мне некоторые проблемы, когда все остальное не удалось.

+0

Я тоже слышал об этом. – LearnCocos2D

3

Переключение в 2D проекции является спасатель по следующему сценарию:

  1. Вы создаете большой CCRenderTexture

  2. Вы рисовать кучу вещей на нем, либо с помощью [... Визит ] или функции рисования OpenGL

  3. Вы добавляете текстуру рендеринга к своему слою, например, для того, что вы нарисовали в пункте 2., чтобы служить фоном для вашей игры.

С 3D-проекцией текстура будет отображаться с вертикальными и/или горизонтальными линиями разломов. См. Например, http://www.cocos2d-x.org/boards/6/topics/16197, который для cocos2d-x, но я наблюдал тот же эффект и для cocos2d-iphone, и настройка проекции на 2D избавилась от проблемы.