GLSurfaseViewの描画スレッドとは別のスレッドでのテクスチャ読み込み(ゲームのローディング画面)

982 views
Skip to first unread message

結城 栽培

unread,
May 3, 2012, 7:30:01 PM5/3/12
to android-g...@googlegroups.com
こんにちは。結城栽培です。

現在、ゲームアプリを開発中なのですがローディング画面の実装にて詰まってしまっています。

ローディング画面の仕様として、以下の順番で処理を動かしたいと考えています。
1,ローディング画面用のテクスチャを読み込み
2,ローディング画面描画
3,スレッドを新しく作る
4,そのスレッドの中でテクスチャを順次読み込み(現在はゲーム中に使用するすべてのテクスチャをひとまず最初に読み込む形での実装)
5,テクスチャ読み込み後、スレッドの破棄
6,ローディング画面を終了してオープニング画面の描画

スレッドを作っているため必ずしもこの順番にはならないと思いますが、
フラグを立ててなるべくこの順番に動くようにはなっています。

この内、つまづいているのは4の部分で、スレッド中にGL10.glBindTextureを使っているのですが
例えばボタンのようなものを描画しようとしてもテクスチャが貼られていない状態となってしまいます。(スレッド外で読み込んだ背景画像などは表示できました。)
テクスチャの元となるpng画像が読み込めてないのかと思ったのですが、
この処理をそのままスレッドの外に出すと思い通りに描画されます。
ただこれではローディング中にロードしてないし、1フレームの間にテクスチャを読み込むというおそまつな状態になってしまいます。

描画スレッドの方で事前にGL10.glGenTexturesで生成したIDもうまく渡せているようなのですが、
なぜ、テクスチャが渡せていない、貼れていないのか原因がわかりませんでした。

androidと言うよりはjavaやopenGLの基礎的な部分なのかも知れませんが
このような事例をお心当たりの方、助けていただければ幸いです。

ゲームを作ることが初めてなため、変なやり方をしている部分があると思いますがご容赦いただければと思います。
よろしくお願いいたします。

Hiroaki GOTO as GORRY

unread,
May 3, 2012, 11:59:23 PM5/3/12
to android-g...@googlegroups.com

後藤 浩昭(GORRY)です。

> [android-group-japan: 18024] OpenGL ES 2.0のマルチスレッドの扱い

から連なる議論で、結局「OpenGL ESのコンテキストを複数のスレッドから
扱うことはできない」という結論を出しています。
上記の議論ではNDK上でのプログラミングを扱っていますが、OpenGL ESの
基本的な事項としてはJava上でも同じことです。

テクスチャファイルの読み込みまでをサブスレッドで行い、GLESへの
登録処理はGLSurfaceView#queueEvent()でメインスレッドに投げる、と
いう形はどうでしょうか。


In message <18331596.2.1336087801610.JavaMail.geo-discussion-forums@pbey5>
"[android-group-japan: 18150] GLSurfaseViewの描画スレッドとは別のスレッドでのテクスチャ読み込み(ゲームのローディング画面)"
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/android-group-japan/-/Ov0TCDVPtEYJ にアクセスしてください。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>



--
Hiroaki GOTO as "GORRY" : 後藤 浩昭
EMAIL: gorr...@gmail.com

結城 栽培

unread,
May 4, 2012, 11:26:21 AM5/4/12
to android-g...@googlegroups.com
後藤さん。

ご返信ありがとうございます。結城栽培です。
上記のマルチスレッドのものですが、ネイティブの知識がないために軽く読み流しておりました。。。
テクスチャの読み込みと登録処理を分けることで希望通りの処理を実装することができました。
ありがとうございます。

もう少しリファレンス等を読んで理解を深めないといけないと痛感いたしました。。
またの時は宜しくお願い致します。


2012年5月4日金曜日 12時59分23秒 UTC+9 GORRY:
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages