トップ 最新

kumaryu日記

2008-03-17 こまめに日記を書こう

_ [OpenGL] GeForceがマルチコアなCPUで遅くなる件

GeForceをマルチコアなマシンに載せると、OpenGLの描画がとてもとても遅くなる件。

調べてみたらopengl.orgのフォーラムでも話が出てた

ドライバ設定を変えればいいんじゃね、ということだが、いちいちユーザーに設定を変えてもらうのは大変。readme読む前に質問してくるからな。

そんなわけでプログラム制御にするにはどうするよ、というのでOpenGLのコンテキストを作るときだけSetProcessAffinityMaskを1で設定しちゃえばいいんじゃね、とな。おおうまいこと考えるな。

しかし根本的な問題についてはわかっていない模様。最後の方で解決したぜ、と言う奴がいるが、よくわからんけどいろいろやってたら何かうまくいった!とかあるし。チラシの裏にでも書いてろよ。

_ Macでプログラミング

あんまりMac固有なことはしてないからMacでというほどのことも無いんだが。

Macのデスクトップを取り込んでWindowsマシンに比較的高速に転送するアプリを作ってた。

本当はリアルタイムにWMVにエンコードしてそのままストリーミング配信できるのがいいんだが、それはさすがに大変過ぎるのでできるところで妥協。

予想以上に苦労はしたが、勉強になったからよかったな。

スレッドや通信にはSDLを使った。最初pthreadとsocketを使ったんだが、Windowsに持っていくのが非常に面倒なので止めた。

なんか変な使いかただなとは思ったけど描画はglfwとOpenGLでスレッドと通信だけSDLだぜ。

で、SDLで困ったのがユニバーサルバイナリ。ふつうにMacPortsで+universalのSDLとSDL_netを使ってたんだが、どうもうまくppc側が作れていない。

しかし、公式に行ったらフレームワークのSDLとSDL_netがあったのでそれを拾ってきて一件落着。

GUIもWindowsとMacで使いまわしたかったのでwxRubyにしたんだがちょっと失敗だったかも。

アプリケーションバンドル内に入れるとこいつらだけで10MB越えやがる。 あと取り込み側はMac専用なんでRubyCocoaでもよかった。画面サイズ取得したかったのにwxRubyではクラスが実装されてなかったよ…。

とりあえずバイナリだけ公開しといたけど、ソースも入れ直してこっちにも張ろうか。現状特定用途向けにひっそり置いてあるだけなので。

WMVエンコードはffmpegとか使ってなんとかして、あとは自前でストリーミングサーバー作れないかなぁ。ffserverとかvlcのストリームアウトが何故か動かないんだよねぇ。

しかし動画フォーマットは資料があんまり見つからないなぁ。