Лучший способ нарисовать круг с OpenGL ES 2.0 / cocos2d 2.0? - PullRequest
2 голосов
/ 16 декабря 2011

Как лучше всего рисовать круги с OpenGL ES 2.0?

Я работаю над проектом для iPad / iPhone, использующим cocos2d 2.0 (в настоящее время бета), который использует OpenGL ES 2.0 и шейдеры вместо OpenGL ES 1.0.

В моих предыдущих проектах я использовал удобный класс ColoredCircleSprite, который включен в пакет SneakyInput. Но теперь с OpenGL ES 2.0 этот код больше не работает, и, честно говоря, я немного растерялся, когда писал свое собственное решение с нуля. Мне нужен подкласс CCSprite, который рисует гладкие круги. (Возможно, с небольшим теневым шейдером ...)

Должен ли я построить прямоугольную форму в вершинном шейдере, а затем отбросить каждый пиксель за пределами радиуса круга в фрагментном шейдере? Или я должен построить вершины круга внутри вершинного шейдера?

Есть ли в сети хорошие уроки по этой теме? Как OpenGL-n00b, я буду признателен за любую помощь!

1 Ответ

2 голосов
/ 16 декабря 2011

Используйте ccDrawCircle :

ccDrawCircle(CGPoint center, float radius, float angle, 
             NSUInteger segments, BOOL drawLineToCenter);

Увеличьте количество сегментов, чтобы сделать круг более гладким.Посмотрите на реализацию ccDrawCircle в CCDrawingPrimitives.h, если вы хотите узнать из кода.

...