けいまさんですけど

死ぬ気でやってりゃ、そりゃ死ぬわ

はじめに

そのうちQiitaにまとめたいけど、ちょっと纏めるまでの間にいろいろありそうなので、こちらにチェックポイントを書いていこうかな。

前提知識

やりたいこと

Live Coding de Nightの出し物を制作する。
CardboardのAPIを使ってミクさんを視姦したい。

検証

ログを見る

Nexus5(Android 4.4.4)で検証。

MainActivity.java を作成し、Logcatを追跡してみた。CardboardView.StereoRendererでimplementした部分を中心に。

```
08-18 15:40:49.809 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onSurfaceCreated()
08-18 15:40:49.809 19749-19767/net.pside.android.sample.cardboard W/CardboardView﹕ Surface size 1794x1005 does not match the expected screen size 1920x1080. Rendering is disabled.
08-18 15:59:02.845 21494-21521/net.pside.android.sample.cardboard D/MainActivity﹕ onSurfaceChanged(897,1005)
08-18 15:59:02.915 21494-21521/net.pside.android.sample.cardboard D/MainActivity﹕ onSurfaceChanged(960,1080)

08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onNewFrame()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onFinishFrame()

// ...

08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onNewFrame()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onFinishFrame()

// ...

08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onNewFrame()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onFinishFrame()

08-18 15:41:06.229 19749-19749/net.pside.android.sample.cardboard W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection
08-18 15:41:06.299 19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onRenderShutdown()
```

気付き

  • onSurfaceChanged(int, int)は、Immersive Modeに移行した時に描画領域が大きくなるので呼ばれているみたい。
  • onNewFrame() -> onDrawEye() -> onDrawEye() -> onFinishFrame() の順にコールされる。onDrawEye()が2度呼ばれるのは、右目、左目、とレンダリングするため。どっちがどっちという情報はたぶん引数で渡されるオブジェクトにでも入ってるんだろう。
  • バックキーを押すとonRenderShutdown()がコールされた。別にバックキーに限定されず、RenderがShutdownされるときに呼ばれるんだろう(?)