GLSL: Clock style bar

Clock (GLSL) Написал GLES шейдер, который имитирует круговое заполнение энергии (прогресса, маны, etc.). Код шейдера и демонстрация работы доступна на сайте ShaderToy.

#define M_PI 3.1415926535897932384626433832795

vec4 col = vec4(0.0, 0.0, 0.0, 0.0);

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    float angle = mod(iGlobalTime, M_PI * 2.0);

    vec2 p = (iResolution.xy - 2.0 * fragCoord.xy) / iResolution.y;

    float q = atan(-p.x, p.y);
    float f = step(0.0, cos((q + angle) * 0.5));

    // mix with texture
    vec2 uv = fragCoord.xy / iResolution.xy;
    vec4 tc = texture2D(iChannel0, uv);
    fragColor = mix(tc, col, f);
}

Время в миллисекундах

Возвращает использование времени в миллисекундах для вызвавшего процесса и всех его нитей:

#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>

int getCpuTime()
{
  struct rusage rus;
  getrusage(0, &rus);
  return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
}

Подробности в man getrusage.

Android: скриншот с помощью adb

На девайсе под управлением Android сделать скриншот статического (!) изображения можно скопировав информацию из фреймбуфера:

adb pull /dev/graphics/fb0 fb.bgra

Расширение bgra нужно для convert из набора ImageMagick, что бы он мог понять каков порядок ARGB. Я пробовал снимать скриншоты на девайсе от Sony, там порядок был BGRA. Возможно он таков на всех устройствах.

В цикле снимать скриншоты можно так:

while [ 1 ] ; do adb pull /dev/graphics/fb0 fb-`date +"%H-%M-%S"`.bgra ; sleep 1 ; done

Конвертация:

convert -size 480x854 -depth 8 fb-*.bgra screenshot-%05d.png

iOS: Invalid Image Path

Вот с такой “CFBundleIcons: AppIcon 120×120 not found” ошибкой столкнулся сегодня при попытке выгрузить новую версию игры в AppStore. Проблема была в “а возьму-ка я этот iconset-темплейт и с его помощью нагенерю иконки”. Темплейт хороший, умеет все нужные иконки. И даже на одну больше, чем мне нужно. Вот из-за нее и была проблема.

Решается просто. В Project navigator кликаем на ресурс Images.xcassets, выбираем AppIcon, удаляем иконку из слота CarPlay iOS 8 120pt. Все, проблема решена.

Android: завершение приложения

Для “завершения” приложения на Android я раньше делал finish() из Activity и exit() из NDK.
Это далеко не лучший, хотя и кардинально чистящий вариант.

После некоторых раздумий решил завершать apploop и дергать из Activity “хоум скрин”:

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startMain);

Next POT

Вычисление следующего Power of Two без использования цикла.

unsigned int nextPOT(unsigned int x)
{
    x = x - 1;
    x = x | (x >> 1);
    x = x | (x >> 2);
    x = x | (x >> 4);
    x = x | (x >> 8);
    x = x | (x >> 16);
    return x + 1;
}

Включение usb-отладки на Android

Хотел проверить работоспособность игры на телефоне жены. Игра работала некорректно, понадобилось чтение лога: adb logcat, а выхлоп пустой. В настройках телефона все включено, но выхлопа нет. Сделал так:

$ adb shell
# echo 1 > /sys/kernel/logger/log_main/enable

Теперь выхлоп есть, можно изучать лог и править движок игры.

Разработка Android-приложений под Gentoo Linux

Решил опробовать свои силы в разработке приложений (точнее игр) под Android. Поскольку моя основная домашняя система Gentoo Linux, то я решил разобраться с вопросом разработки именно под ней.

Все не так сложно, когда знаешь, что и как нужно устанавливать. Хотя мне предварительно пришлось повозиться с поиском и осознанием документации.
» Read more

1 2 3 4 5 11