Предисловие.
Раньше программировал на OpenGL, первой версии. Но это было давно и не очень много знал.
Сейчас вот решил попробовать написать маленькую 3D-игру для Android. Чтобы как то облегчить себе жизнь взял уже готовый движок - Marmalade (С++),
но он все-таки достаточно низкоуровневый (купить Unity жаба не позволила).
Что хочется сделать:
1. Камера от первого лица
2. Плавный поворот в выбранную точку на сенсорном экране.
3. Вывод текста в затемняемой нижней части, как напр. в Resident Evil.
4. Полно-экранные спецэффекты, в том числе вывод поверх дополнительного изображения, напр. как в The Path.
Вопросы
1. Насколько правильно перемещение игрока-камеры по плоскости делать через изменение Model-матрицы, а управление взглядом через изменение View-матрицы?
Если неправильно, то может кто-то поделится псевдо-кодом, как более правильно?
4. Где бы почитать про полно-экранный вывод?
Может кто поделится ссылками на уроки для начинающих? Nehe устарел насколько я понял.
А FAQ на форуме - http://www.gamedev.ru/code/forum/?id=138435 - уже для следующей версии OpenGL :(
Было бы здорово, если бы нашелся сайт с уроками по Marmalade (уроки с gamedev.ru положены в копилку). Официальный сайт что-то не очень для начала.
P.S. Движок нужен простейший. Без физики, даже наверно без вывода анимации, потому, несмотря на незнание OpenGL/C++, надеюсь у меня всё получится :)
1. Я бы так и сделал.
2. Поворот в точку - это как?
3. Resident Evil не видел. Речь про субтитры? Не вижу, какие с ним проблемы. Берём и выводим текст. Под него при надобности можно положить черный полупрозрачный прямоугольник.
4. Рендер в текстуру при помощи FBO, а затем рисование одного большого квада на весь экран с этой текстурой. В шейдере пиши нужный тебе эффект (размытие, цветокоррекция и т.д.)
ALPINE,
1. я так и сделал. Просто сомнения были, что верно. Спасибо за развеянные сомнения. Оставляю.
2. У меня управление не мышкой, а в зависимости от того, куда пользователь пальцем нажал. Сам сделал: пришлось вспомнить курс школьной геометрии.
3. С текстом в разделе Мобильные устройства помогли :)
4. Нашел демку, так что вопрос снялся. На моем телефоне на MTK 6577 (PowerVR 531) на разрешении 1280x720 на простой сцене выдается 25 кадров, и ровно в два раза меньше, если полноэкранный bloom сделать :(
Zoobastik
> полноэкранный bloom
Для полноэкранного bloom'a можно уменьшить размеры FBO в два раза. К чему такая точность, когда блум и так всё размывает? Рендерим в маленький FBO, маленький FBO натягиваем на другой маленький FBO с применением bloom'a (пикселей в 4 раз меньше чем изначальный вариант), затем готовую текстуру выводим. Надо только в fillrate не упереться.
ALPINE
> Для полноэкранного bloom'a можно уменьшить размеры FBO в два раза. К чему такая
> точность, когда блум и так всё размывает? Рендерим в маленький FBO, маленький
> FBO натягиваем на другой маленький FBO с применением bloom'a (пикселей в 4 раз
> меньше чем изначальный вариант), затем готовую текстуру выводим. Надо только в
> fillrate не упереться.
На PowerVR с этим плохо, у меня делается все примерно так, как ты сказал, но лучше не особо становится,
когда на сцене полигоны на пол экрана и много прозрачности, а потом сверху бросаем блум, то фреймрейт дико падает.
Печально, я сейчас игру пишу, в которой как раз рассчитывал на подобную технику. Надо будет провести тесты. Если несколько квадов с размером в 4 раза меньше площади экрана и несложным шейдером будут тормозить - это будет очень печально.
Рекомендую java + libgdx. Просто, бесплатно, удобно.
Если я не ошибаюсь, мармелад ваш 2д движок, непонято о каком 3д идет у вас речь
Про то, что хочется, при желании думаю вам это удастся, но желания надо очень много.
Вопросы
1. Камера = управление взглядом = GL_PROJECTION
4. Тоже что и оконный вывод, только окно весь экран, ничего нового там не изобрели
Nehe вам в самый раз
простых движков небывает.
Рекомендую java + libgdx. Просто, бесплатно, удобно.
Если я не ошибаюсь, мармелад ваш 2д движок, непонято о каком 3д идет у вас речь
Мужики, вы хоть на сайт мармелада зашли бы для начала, прежде чем что-то писать.
Тема в архиве.