toge's diary

コンピュータ関連の趣味をつらつらと。

OpenGL

OpenGL3.xを使うためにどうすれば・・・

もう時代はOpenGL4.0だというのに、OpenGL3.x系に対応したライブラリの少ないことよ。新規のOpenGLプログラムを作るときにせっかくなのでOpenGL3.2で作ろうと思うのです。 ところがマルチプラットフォームでOpenGL3.xを使おうとすると、選択肢が殆どなくなっ…

Clutter 1.0.0をビルドしてみる

7/31より京都に行っていたのでいろいろと消化中。片手間にClutter。当然ながらまずはUbuntu上でやってみる。依存ライブラリ多すぎ。とりあえず手元のUbuntu9.04ではこんな感じ。 % tar xvf ~/down/clutter-1.0.0.tar.gz % cd clutter-1.0.0 % sudo apt-get i…

Clutter v1.0.0 release

Clutter Project | Have fun!OpenGL使って、素敵なGUIを構築するためのツールキットらしい。Windowsにも対応しているらしいけど、ちょっと見た限りバイナリがない。うーん、残念んだが構築はかなり面倒くさそう。一晩適当にコンパイルしてみよう。

OpenGL拡張機能のライブラリ

私が長年愛用してきたGLeeが知らないうちにアップデートしていた、ちゃんとOpenGL3.0にも対応しているようだ。http://elf-stone.com/glee.php素晴らしいと思うと同時に、すっかりOpenGLの拡張機能とか使わなくなったなぁと思ってしまうのです。そろそろシェ…

OpenGL 3.0のドライバ

NVIDIA OpenGL 3.0 Support for Windows and Linux http://developer.nvidia.com/object/opengl_3_driver.htmlもうOpenGL 3.0のドライバが公開されているとは思いませんでした。 しかもLinux版まで提供されてるよ。すげ〜。まだUbuntuのリポジトリは対応して…

OpenGL 3.0はやく使いたいな

まだ詳しく見れていないけれど、OpenGL3.0は今まで苦痛だったOpenGLの嫌な面をちゃんと修正してくれそうに見えます。で、問題なのは「いつドライバでるのよ?」というところ。こういう時はいつものPhoronixです。http://www.phoronix.com/scan.php?page=arti…

テクスチャのロードが遅い 解決篇

id:toge:20080721#1216652749相変わらず解決する問題はへたれなものばっかりなのですが。遅い理由、分かりましたよ。SGIS_generate_mipmapがONになっていたので、glTexSubImage2D()をする度にmipmapが生成されていたのが問題でした。なんてこったい。

テクスチャロードが遅い

画像の大きさのヒープメモリを食われるのが嫌で画像1ライン分のバッファをとって、glTexSubImage2D()を使ってテクスチャロードしています。貧乏性なもので。http://code.google.com/p/reflectblade/source/browse/trunk/TextureManager.cpp#168んで、半年ぐ…

GLUTによるOpenGL入門2 テクスチャマッピング

ISBN:9784777513321近頃散々な話しか聞かないOpenGLですが、Linux使いとしては他に選択肢がないのですよ。ってことで、OpenGL本が出てきたら買ってちまちま勉強しているわけです。最近読んだ中ではこれが一番有益かなあぁと思いました。床井研究室の書籍化な…

余計な可視判定はしないが吉

BBOXだけ計算して、後の正確な可視判定をせずにOpenGLで描画してみたら、 ある程度正確に可視判定する描画よりも30%も速かった・・・。確かに描画部分は2次元に射影すれば台形なので殆ど描画対象になるわけで、描画命令出しても無駄になることは少ない。そ…

可視判定間違ってた

やっぱり・・・。カメラ座標を求める部分がそもそも間違ってた。どうやら昔上手くうごかない時に適当に加えてた値があったみたい。その部分をちゃんと計算するようにして、他の部分も直してってやったらちゃんと画面のエッジの部分でぎりぎり切れるようにな…

可視判定間違ってた・・・

可視判定間違ってたよ・・・。おかげで座標情報を計算→GPU転送する部分が無茶苦茶ボトルネックになっていた。FPSも4倍ぐらい跳ね上がるし。全くなんてこったい。まだここらへんバグがありそうだから、セルフレビューを続けようっと。

AntTweakBar 1.10

http://www.antisphere.com/Wiki/tools:anttweakbar一年ぐらい前(id:toge:20060920#1158771322)に取り上げたライブラリですが、地味に開発されてたのね。ソースコードも公開されて、ライセンスもzlibのまま。"small”と主張しているけれど、1.6KLはちょっとデ…

時間のかかる処理を別スレッドへ

id:i-saint:20070615#p1 さんに触発されたので。せっかくCPUが2つ以上見えるのだから時間のかかる処理を別スレッドへ逃してしまえという話。 残念ながらOpenGLの関数とかSDLの関数を別スレッドで呼ぶと悲惨な結果になるので、純粋なC++のルーチンで時間のか…

メッシュ描画にVBOはかえって遅い?

id:toge:20070430#1177960684 の続き。うーん、寝ながら考えたが、非VBOなソースでもそんなに速度が変わっていないことを考えると、 メッシュ描画は主体的なパフォーマンス要素ではない 実は頂点描画の方が圧倒的に重い のどちらかの可能性が高いな。GPUの性…

輪っかを描画

とうとう輪っかを書きはじめました。なるさん(http://raevatain.blog9.fc2.com/)を見ながらやっぱり輪っかは最高だと思うので。当然ながら、なるさんのレベルには絶対たどり着かんと思うが・・・。とりあえずプリミティブで輪っかを書いてみた。テクスチャ座…

YouTubeにアップしてみた

EasyBMPtoAVIとmencoderを利用してYouTubeに画像を登録してみました。なんか画面荒いよね。きっと綺麗に出す方法があるんだろうな。

軽い画面キャプチャ

ちょっとはまったけれどまずは馬鹿みたいにBMPファイルに書き込む動作は出来た。これだけでも結構使える。はまったのはプログラムでVBOを使っていることを考えて、glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);としておかないと異常終了する場合があること。こ…

軽く画面キャプチャしたい

id:toge:20070126#1169796599ちょっと前の話を受けて、軽く画面キャプチャする仕組みを模索してみようという話。ビデオキャプチャとかハードウェアが入らない、お手軽路線で。

動画取り込み方法模索

OpenGLの動画キャプチャで良い方法はないだろうか?Bugleの動画保存機能は便利なのだけどびっくりするぐらい遅くなるし。Dual Coreにすれば少しはよくなるかと思ったけどぜんぜんそんなことなかった。 自分で解決するとするならglxSwap...を上書きして現フレ…

そして本当の遅い理由が明らかに

glFrustumで指定している視錘台が非常にぺしゃんこであったために、視錘台の奥の方で非常に大量のテクスチャが描画されていました。うう、なんてことだ。視点を今よりももっと遠くに置くようにして、適正に細長い視錘台に設定したら、描画される頂点は10%程…

偽LOD失敗

偽LODは見事に失敗しました。水面なのに短冊上になってしまった。まともなLODを勉強して、再チャレンジしよう。それまではこの汚いコードのままで。可視判定はまあ汚いながらもうまくいき、30%ぐらい高速化しました。偽LODがうまくいかなかったのは残念だけ…

水面高速化は続くよどこまでも

うぬ、30Hzでしか更新しない法線情報をVBOに入れ込んでみて、明らかに最内ループで参照しているヒープ変数を外に出したりしたら、あっさりFPSベースで40%高速化した。要したコード量数十行。達成感があると同時にちょっとでも気を抜くとこんなに遅くなるのか…

簡易可視判定+偽LODを実装してみる

結構あっさり高速化したので気を好くしてぱぱっと簡易可視判定+偽LODを実装してみた。1時間で何も考えずに100行以上書いてしまったこともあって、コードが容赦なく汚い。たぶんこれ自体も高速化出来そうな予感。肝心の高速化だけど・・・可視判定にミスって…

この2日でやること

ここ数ヶ月時々思い出したようにやっている、水面描画のためのメッシュ描画が異常に遅いので、どうにかしよう。 Core2Duo + GeForce7600GS という組み合わせで 512x512のメッシュを描画するだけで20fps程度なんてありえない・・・。なんか間違ってるんだろな…

却って遅いよVBO

なんか、冷静に見てみるとVBOを有効にした方が遅いんですけど・・・。glDrawElements()のかわりにglDrawRangeElements()を使ってみたりと、いろいろ工夫してみたが、VBOの不利は変わらず、もしかして頂点配列万歳の時代なんでしょうか?

GLee 5.21 releaseed

http://elf-stone.com/glee.phpOpenGL 2.1対応と、NVidia GeForce8対応らしい。まあ、あんまり私に影響はなさそうだけど、普通に差し替えてみました。インターフェースは変わっていないのであっさり終了。GeForce8の廉価版が早く出てこないかなぁと待つ次第…

PCI Expressの効果?

id:toge:20050808#1123590414 あたりの続き。水面を高速化するためにVBOを導入してみるも、何も動作が変わらん。なんでじゃ?と思って、昔作ったVBOのベンチマークをとるプログラムを動かしてみた。 normal 0.00499 array 4 0.12300 array 8 0.06532 array 1…

水っぽくなってきた

でも、まだまだだね。やっぱりグーローシェーディングでは限界があるか。とうとうGLSLを使うときがきたようだな。

glIndexPointerはカラーインデックスの配列を示す

http://www.cs.rit.edu/~ncs/Courses/570/UserGuide/OpenGLonWin-15.html より glIndexPointer() specifies the location and data format of an array of color indexes. うん、完全に勘違いしてましたよ。てっきりglDrawArrayElements()に渡すのと同じ意味…