忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2025/05/18

AndroidのTexture関係について

基本的には普通にgl関数を呼ぶだけでいいみたいですが、いちおうメモ。


まず生成について。
GLSurfaceView.Rendererの継承関数内であれば正常に生成できます。

次に破棄、これも
生成と同タイミングで可能です。


使用不可能なタイミングでgl関数を呼び出した場合は
[tag]libEGL
[text]call to OpenGL ES API with no current context (logged once per thread)
という使用不能である旨のログが残ります。
エラー落ちやブロッキングはないので安心ですね。

というわけでRenderer内部での処理にTexture生成、削除をしているなら
何の心配もなく行えます。
また、Activityが終了する際には解放する必要はありません。

exeの作成に慣れていると破棄時(ここではActivity.onDestroy呼び出し時)に
全要素を解放したくなりますが、ここはRendererの処理範囲外なので
例の使用不能呼び出しがログに残るだけです。
Textureは削除されていることを信じて祈りましょう。
コントロール出来ないのはちょっと気持ち悪いですが目をつむります。

さて、API内部で勝手に破棄してくれているので、再開時には
onSurfaceCreateで削除されたTextureを再生成する必要があるそうです。


以上を踏まえてタイトルなりゲーム部分なりを作る際には
プログラム
public abstract class Scene {

 public abstract void Init(); // 初期化. ロードはしない.
 public abstract void Step(); // 毎ループの更新処理.
 public abstract void Draw();// 毎ループの描画処理.
 public abstract void Destroy(); // 全メンバ変数の解放
 public abstract void DeleteTexture(); // Textureのみの破棄
 public abstract void LoadResources( resources ); // 全リソースのロード
 public abstract void LoadTexture( resources ); // Textureのみのロード
 public abstract void TouchEvent( event ); // Androidの入力処理

}
こんな感じです。とりあえずこれで1作品作ってみましたが
何ともしっくりこない作りですね。

今日も寒いなぁ…。
明日こそは外に出よう。

拍手[0回]

PR

2015/01/25 プログラム Comment(0)

COMMENT

COMMENT FORM

NAME
MAIL
WEB
TITLE
COMMENT
PASSWORD

プロフィール
 
HN:
ユニ
性別:
男性
 
 
カテゴリー
 
 
 
最新記事
 
(03/09)
(10/27)
(08/09)
(07/15)
(06/02)