Выбор цвета OpenGL ES на iPhone

Я изучаю 3D на iPhone, мне удалось получить 3D-куб на устройстве, но я хотел бы добавить интерактивность, например, прикосновение к одному лицу вызывает определенное событие, а к другому лицу - другое событие. Я бы предпочел держаться подальше от выбора лучей, так как это добавляет дополнительную сложность, которую я не хочу использовать в своем приложении.

Я прочитал довольно много руководств по выбору цвета, но, похоже, нигде в Интернете нет никаких учебных пособий для iPhone или примеров кода.

Моя основная проблема заключается в отрисовке уникальных цветных объектов в задний буфер и текстурированных объектов в передний буфер, никогда не показывая пользователю уникальные цветные объекты, но определяя цвет пикселя, которого коснулись из заднего буфера.

Итак, мой вопрос: может ли кто-нибудь указать мне направление учебника по Objective-C или опубликовать пример кода?

Любая помощь или совет будут высоко оценены.


person David Hancock    schedule 06.09.2010    source источник
comment
Проверьте этот stackoverflow. com/questions/6774197/   -  person Cynichniy Bandera    schedule 10.06.2012


Ответы (1)


Итак, через 18 часов я наконец исправил свою проблему. В методе рендеринга все, что мне нужно было сделать, это предотвратить вызов presentRenderbuffer, когда рендеринг находился в режиме SELECT. Я мог бы ударить себя прямо сейчас!

if (mode == SELECT) {
    glDisable(GL_DITHER);
    glDisable(GL_LIGHTING);
    glDisable(GL_LIGHT0);
}

// Draws the cube object, face by face and adds unique color to each face
[Face1 draw];
[Face2 draw];
[Face3 draw];
[Face4 draw];
[Face5 draw];
[Face6 draw];

if (mode == SELECT) {
    glEnable(GL_DITHER);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
}

// Wrapping presentRenderbuffer with this if statement fixed
// the problem where the unique colors would appear onscreen
if (mode == RENDER) {
    [context presentRenderbuffer:GL_RENDERBUFFER_OES];
}

Я надеюсь, что это может помочь кому-то еще в будущем: о)

person David Hancock    schedule 07.09.2010
comment
Хороший учебник, но создание буфера для каждого кадра — это пустая трата процессорного времени. Лучше сразу выделить буфер или отрисовать текстуру размером с экран. - person simiula; 28.03.2014