2014-01-05 (日)
*今日で休みが終わりなはずがない
Androidで今までSurfaceViewを使ってた箇所をSurfaceTextureに置き換える必要があったのだけど,微妙にわかりにくいというか,使い方すぐ忘れてしまう.
SurfaceTextureViewがSurfaceViewを継承してて,SurfaceTextureはSurfaceを継承してないとか,GLSurfaceViewはあってもGLSurfaceTextureViewは無いので自分で実装しないといけないあたりが混乱を呼んでる気がする.
あとは,android.view.GLES20Canvasあるけど,publicじゃないしどうやってインスタンス取得できるんだっけとか半年に1回くらい同じとこで迷ってるけど,OpenGLテクスチャからSurfaceTexture作ってそれを元にSurfaceを作ってCanvas取得すれば良い.
以前は,OpenGLで文字を描画したいときは一度Bitmapに書き込んでからテクスチャに書き込む必要がありましたが,Canvasとして扱えるのでかなり楽です.そして多分こっちのほうが高速.
というわけで,OpenGL使ってニコニコ動画のコメントを60fpsでレンダリングするのを試そうとしてたのだけど,気づいたらこんなの作ってた.
コメントはまだダミーのデータ.
SurfaceTextureから作ったCanvasに書き込むと,何か色が変なのだけどどこか間違ってるのかな(→追記:多分コメントデータ作るところのバグ.SurfaceTexture無罪).あとピクセルフォーマットを指定する方法がわからなくて透過できないのだけど,どうしたものか.とりあえずシェーダで特定の色を透過させる.
普通の量のコメントで60fps出るか分からないけど,がんばればたぶんいけそう.そのうちやろう.