kumaryu日記
2008-02-12 まだまだドキュメント書き
_ まだ終わらんよ
ドキュメント書きはまだ終わりません。
ドキュメントといっても簡単なプログラミングに関するチュートリアルなんだが、 そっちの方が大変だわね。
今月一杯くらいはずっとかかりそうな予感。 後半になるほど楽になる予定なんだが、そこにいくまではとても辛い。
好きでやってることなんで辛いって程ではないけどね。
xreaでこことは別に取ってあるアカウント、100MB強ものムービーを置いたら転送量が初めて見るような値に。 有料アカウントだからそれほど厳しくは無いだろうし、一時的に集中するだけなんだけど、 順調に行けば今月中にあと3回やるんだよなぁ。
とはいえ、転送量については明確な基準が書いてないから文句言われてから対処するしかないんだけどな。 使おうと思ってたBittorrentのトラッカーサイトが無くなってたのが惜しい。
_ [OpenGL] DrawPixelsとテクスチャ
Macで動いてた文字描画がWindowsで動かない様子。
文字だけ表示ならでるけど、スプライト*1と同時表示だとでない、 ということで普通に俺のバグっぽい。
でもWindowsではMacのOpenGL Profilerぽいのが無くてとても不便だ。 イスラエルまでFAXしてgDEBugger買うのは大変過ぎる。
とはいえ、影響しそうな部分をWindowsとMacで変えてるつもりもないんでMacで調べてみる。
文字はfreetype2でビットマップにレンダリングしたものを直接glDrawPixelsに渡してる。
しかしどうも影響しそうなステートは正しく設定されている。 気になるのはテクスチャが有効になっちゃってる位だが、DrawPixelsには関係ないよなぁ。 いちおう仕様書確認したが、ぱっと見た感じでは関係なさそうだし。
しかし、それ以外になさそうなので強制的にテクスチャを切ってみると…あーでたー。
いったい何を考えてるのかわからんがすくなくともWindowsのNVIDIAのドライバではテクスチャが影響するらしい。 あとその場合とてもとても重くなる。
おかしいだろと思ってたが、2chみたら丁度同じ話題がでてて、影響するのはむしろ正しいらしい。 たしかに仕様書見るとDrawPixelsの出力のあとにテクスチャ適用がきてるわ。
でもさ、DrawPixelsってテクスチャ座標の指定しようがないんだけど…。
仕様書見てもどこの座標がサンプリングされるのかよくわからんし。 雰囲気的にglTexCoordで最後に指定した値が全体に適用されるんじゃないかと思うんだが、 それってまったく役に立たないよな。
それはともかく、DrawPixelsで描画はやっぱり重いし、 文字描画は一旦テクスチャに落とした方がいい気がしてきた。
問題はめんどいということだけだ。
*1 というかテクスチャ貼った板ポリ
_ [Riko] スプライト描画
同じスプライト30個位描いたら大変重いとか言われてしまった。
環境がわからないのでそれほど気にするようなものでは無いんだろうけど、 スプライト描画が重い前科はあるのでどうしても気にはなってしまう。
重いとするならテクスチャ設定をなんどもしてたりとか、4頂点のポリゴンをまとめずに送ってることか。
バッチにまとめるかー、とやってみたら逆に重くなったよ…。
いままで変形は行列にして描画時に設定してやり、 頂点情報は基本的にいじらないようにしてたんだが、 行列が1回の描画で1つしか渡せないので変形済みの頂点情報を毎フレーム設定することになった。
で、その変形およびプリミティブ作成が重いとな。
SimplePrimitiveが重いとかの問題までくるなこりゃ。 まあSimplePrimitiveは使い勝手よいしもっと速くてもいいと思ってたからこれをCで書いてしまおうか。
あとSimpleじゃない普通のPrimitiveの存在意義がほぼないので統合して一本化しようか。