Period.RXの管理人、TOKIが日記として綴るブログです。
TOKIのニッキだから、トッキ。
be always next to you
2009
昨日作ったソフト、実は絵を10個くらい表示させると結構カクカクしてたのだ。
そこで改良。まず、ヌルヌル動くサンプルCustomTextDemoを持ってくる。1000FPSとか何考えてんだよ。これをとにかく動く範囲でコメントアウトしていく。すると、あるところをコメントアウトすると途端にカクカクし始めることに気づいた。お前の仕業か、setSwapInterval()!!OGLは勝手に描画を遅らせていた。な、なんだってー。
これの引数を0にとって実行するとあら不思議、処理スピードが……速くならない。ヘイヘイ、どういうことだよ。
……調べた結果、超早いと勝手に信頼していたOGLのglTexImage2Dだった。さすがに毎回1440*900のテクスチャを貼り付けるのは酷か。てゆか、背景は単色なんだから1*1のテクスチャをループさせればいいじゃん……。別にテクスチャである必要すらないけど、後で市松模様とかにさせたりもできるように残しておく。
んで書く線。これは完全に単色だからテクスチャじゃなくてGLの方で色を決める。さらにこれもフルサイズのテクスチャにglTexSubImage2Dしてたから、無くして直接四角形を書く。
1296000画素のテクスチャを毎回2つも読み込んでいたのを消すと、さすがに早くなった。1秒ごとにフレーム数を数えると、何もしてない場合で1000FPSで回ってる!これは嬉しい!いまこの画面は1秒に1000回描画されてるZE☆
でも書く絵が増えるごとにFPSも減っていく。。。画面が埋まる前に30を下回った。これは実用的じゃないかもわからんね。
これもやはりglTexImage2D。でも刻一刻と変わるアニメーションを1フレームずつテクスチャにしとくわけにもいかないし……と思ったら、頭の上に電球が。
ひとつのファイルごとにテクスチャを作っとけばいいんだ。いちいちglTexImage2Dで読まんでも、欲しい絵をbindして描画すれば……って、これ最初からあるTextureクラスでまんまやってることだね。まぁ、オレは画像を1pxずつ読み込んで画素をByteBufferに書き込んでるから、自分でTextureクラスを作ったよ。
これでも絵が増えたらFPSが下がるからさらに見ると、いちいちテクスチャのある場所をファイル名で検索するロスがあった。こらもうファイル名からそのテクスチャの場所を直接指すポインタを別に設ければいいでしょ。完璧。
かくして、50個くらいアニメーションする絵を置いても400FPS弱くらいを維持できるようになったのでした。めでたしめでたし。
そこで改良。まず、ヌルヌル動くサンプルCustomTextDemoを持ってくる。1000FPSとか何考えてんだよ。これをとにかく動く範囲でコメントアウトしていく。すると、あるところをコメントアウトすると途端にカクカクし始めることに気づいた。お前の仕業か、setSwapInterval()!!OGLは勝手に描画を遅らせていた。な、なんだってー。
これの引数を0にとって実行するとあら不思議、処理スピードが……速くならない。ヘイヘイ、どういうことだよ。
……調べた結果、超早いと勝手に信頼していたOGLのglTexImage2Dだった。さすがに毎回1440*900のテクスチャを貼り付けるのは酷か。てゆか、背景は単色なんだから1*1のテクスチャをループさせればいいじゃん……。別にテクスチャである必要すらないけど、後で市松模様とかにさせたりもできるように残しておく。
んで書く線。これは完全に単色だからテクスチャじゃなくてGLの方で色を決める。さらにこれもフルサイズのテクスチャにglTexSubImage2Dしてたから、無くして直接四角形を書く。
1296000画素のテクスチャを毎回2つも読み込んでいたのを消すと、さすがに早くなった。1秒ごとにフレーム数を数えると、何もしてない場合で1000FPSで回ってる!これは嬉しい!いまこの画面は1秒に1000回描画されてるZE☆
でも書く絵が増えるごとにFPSも減っていく。。。画面が埋まる前に30を下回った。これは実用的じゃないかもわからんね。
これもやはりglTexImage2D。でも刻一刻と変わるアニメーションを1フレームずつテクスチャにしとくわけにもいかないし……と思ったら、頭の上に電球が。
ひとつのファイルごとにテクスチャを作っとけばいいんだ。いちいちglTexImage2Dで読まんでも、欲しい絵をbindして描画すれば……って、これ最初からあるTextureクラスでまんまやってることだね。まぁ、オレは画像を1pxずつ読み込んで画素をByteBufferに書き込んでるから、自分でTextureクラスを作ったよ。
これでも絵が増えたらFPSが下がるからさらに見ると、いちいちテクスチャのある場所をファイル名で検索するロスがあった。こらもうファイル名からそのテクスチャの場所を直接指すポインタを別に設ければいいでしょ。完璧。
かくして、50個くらいアニメーションする絵を置いても400FPS弱くらいを維持できるようになったのでした。めでたしめでたし。
PR
Post your Comment
プロフィール
HN:
TOKI
年齢:
35
HP:
性別:
男性
誕生日:
1989/09/02
職業:
シャトルの観察
趣味:
バドミントン
自己紹介:
広く浅くをモットーに、好奇心を武器に日々生きてきた。
マッシュアップに興味がありまする。
:::好きなモノ:::
・音楽
・甘いもの
・辛いもの
・バドミントン
・パソコン
・音楽
・筆ペン
マッシュアップに興味がありまする。
:::好きなモノ:::
・音楽
・甘いもの
・辛いもの
・バドミントン
・パソコン
・音楽
・筆ペン
ブログ内検索
カレンダー
01 | 2025/02 | 03 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
アーカイブ
カテゴリー