В очередной раз решил поэкспериментировать с модульной архитектурой движка. Для начала немного теории о том как я вижу реализацию такой архитектуры. После завершения разработки движка (или прототипа) напишу как все получилось в итоге.
суббота, 15 апреля 2017 г.
вторник, 7 февраля 2017 г.
OpenCL vs OpenGL vs CUDA
Небольшое сравнение функционала этих API для GPGPU. Тестов на производительность не будет, только удобство использования API.
четверг, 12 января 2017 г.
Просто скриншоты с работы
Недавно была добавлена поддержка карт высот и рисование ландшафта. Так как предполагается работа на мобилках, то детализация неочень.
среда, 4 января 2017 г.
Разбор багов компиляторов и программистов
Периодически сталкиваюсь с различными ошибками программистов и особенностями различных компиляторов, поэтому решил это залогировать, не факт, что все вспомню, но как минимум буду пополнять новыми ошибками.
воскресенье, 13 ноября 2016 г.
Долгий путь борьбы с глобальными переменными
Основано на моем опыте написания своих движков, приложений. В сторонних проектах видел все те же способы и ничего оригинального припомнить не могу.
пятница, 4 ноября 2016 г.
Shadertoy!
Сначала я хотел написать про алгоритмы которые я использую для генерации, но ничего оригинального в них нет и материалов таких полно, а вместо скриншотов и листингов кода намного интереснее смотреть как оно реально работает. Поэтому создал аккаунт на Shadertoy и буду туда выкладывать примеры, а сюда только финальные скриншоты и видео как оно смотрится на ландшафте.
вторник, 25 октября 2016 г.
Перезапуск
А пока немного скриншотов и видео:
среда, 19 февраля 2014 г.
Долгий анализ входящего смс
В процессе улучшения работы анализа смс сообщения наткнулся на одну проблему в работе BroadcastReceiver'а: при долгом анализе сообщения в функции onReceive процесс прибивался и не получалось отфильтровать ненужное сообщение.
На версии до 2.3.3 (API 10) на работу внутри onReceive выделялось больше времени, в версии 3.0 (API 11) время сократили, но появилась функция goAsync() возвращающая BroadcastReceiver.PendingResult, что позволяет делать тяжелую обработку в параллельном потоке и не нагружать главный. На работу в параллельном потоке дается 10 секунд, этого вполне достаточно. Следующий в очереди BroadcastReceiver не будет вызван до вызова BroadcastReceiver.PendingResult.finish(), так же есть функция BroadcastReceiver.PendingResult.abortBroadcast() чтоб прервать дальнейшую обработку события.
Вариант с выносом обработки в Service для меня не подошел из-за невозможности вызвать другие обработчики смс. Для эмуляции прихода нового сообщения необходимо разрешение BROADCAST_SMS которое доступно только системным приложениям. Был вариант с имитацией получения смс, для этого нужно было показать уведомление и добавить во входящие (остальные изменения имитировать не получится), но по приведенной выше причине, а также из-за возможных проблем на версии 4.4, этот вариант не подошел.
Ну и ссылка на приложение: SMS Spam Filter ))
На версии до 2.3.3 (API 10) на работу внутри onReceive выделялось больше времени, в версии 3.0 (API 11) время сократили, но появилась функция goAsync() возвращающая BroadcastReceiver.PendingResult, что позволяет делать тяжелую обработку в параллельном потоке и не нагружать главный. На работу в параллельном потоке дается 10 секунд, этого вполне достаточно. Следующий в очереди BroadcastReceiver не будет вызван до вызова BroadcastReceiver.PendingResult.finish(), так же есть функция BroadcastReceiver.PendingResult.abortBroadcast() чтоб прервать дальнейшую обработку события.
Вариант с выносом обработки в Service для меня не подошел из-за невозможности вызвать другие обработчики смс. Для эмуляции прихода нового сообщения необходимо разрешение BROADCAST_SMS которое доступно только системным приложениям. Был вариант с имитацией получения смс, для этого нужно было показать уведомление и добавить во входящие (остальные изменения имитировать не получится), но по приведенной выше причине, а также из-за возможных проблем на версии 4.4, этот вариант не подошел.
Ну и ссылка на приложение: SMS Spam Filter ))
среда, 10 июля 2013 г.
Баги и фичи реализации OpenGL ES 2.0
Сборник багов в реализации драйверов OpenGL ES 2.0 с которыми мне пришлось столкнуться.
среда, 9 января 2013 г.
Некоторые особенности OpenGL
За время использования OpenGL последних версий (3.3 и выше) накопилось не мало особенностей в его использовании, а так же отличия реализаций от nVidia и AMD, поэтому сформировал небольшой (пока) сборник.
среда, 3 октября 2012 г.
Двухсторонняя карта смещения.
Сейчас пишу игру на конкурс шутеров на gamedev.ru. В игре планирую использовать несколько интересных техник и по мере реализации буду писать о них здесь.
Первая техника - двухсторонняя карта смещения (dual-sided dismplacement map) используется для создания разрушаемых стен, полов и других аналогичных поверхностей (далее для простоты буду называть такие поверхности стенами).
Первая техника - двухсторонняя карта смещения (dual-sided dismplacement map) используется для создания разрушаемых стен, полов и других аналогичных поверхностей (далее для простоты буду называть такие поверхности стенами).
Подписаться на:
Сообщения (Atom)