プログラマのつれづれなるままにプログラマのつれづれなるままに音宮志久が思ったことなどをネタにします。プログラムネタ・数学ネタがメインです。Alphaを公開コメントを残すというわけで前回からの記事にもありましたとおりOpenGL対応版のテストを行いある程度できるとの判断で公開しました。いくつかテストをしましたが、まあまあと言うところだと思っています。組んでいる中でループで組めるのに処理を並べて書いていたりする部分も展開してコードもちょっとすっきりさせました。OpenGL対応とは言っているけれども確かに対応するためのルーチンを組み入れましたが、いろいろと細工をしています。いうか、OpenGLのプログラムを見ていたのですが、もしかして、と思っている項目が一つあります。それはDirect3D系には「変換済み座標系」を扱うための形式やらがあるのですが、どうもOpenGLにそのような定義がないように見受けています。すると、OpenGL上で3Dを扱うとき、常に「変換前座標系=ワールド座標系」を使わざるを得ないのでは?というものです。それにヒントを得てOpenGL系の内部処理を使うパターンを組んでいます。そのため、もし変換済み座標系をOpenGLで扱うものがあると内部処理パターンは見事な状態になると思います。一応失敗したときにそれに対応するため、昨日の記事で「動作が遅すぎる」と書いた動作系も使えるようにしてあります。そちらの方はもう少し丁寧な処理をしているので遅くても良いのであればそちらを使う手もある、ということはblogに記述しておきたいと思います。迷ったときにはこの記事を見ることになるような気がしますので。OpenGLは外部ライブラリを使うことが多くて・・・プログラム本体が完全にOpenGLを組み入れていることってあまりないような気がします。GLUTやSDLなど。これを使っている場合はかなりむちゃくちゃなことをしないと動作しません。本体にパッチを行う以外にもたとえばGLUTの場合だとGLUTのDLLをWindowsのシステムディレクトリから拾ってきて一度WindowModePatchのパッチ処理を行った後、できたDLLを動作させるプログラムと同じ場所に放り込むというように。SDLを使っている場合はさらに悲惨です。ほとんどの場合、OpenGLのロードがLoadLibrary経由で実行されているのでそちらもどうにかしないとうまくいきません。Walkerというユーティリティを使うと判定できます。これはDLLやEXEで使用されている外部ライブラリおよびその中で使用される処理を列挙するためのもので、これでGLUT(glut.dll)やSDL(SDL.dll)が使われているかどうかを見ることができます。普通にフリープログラムなので持っておくとちょっと楽しいかもしれません。基本的に英語環境を想定しているためか、プログラム名までのパスに日本語文字がはいるとロードに失敗します。そのため、ロードしてみるときはパス名およびファイル名はすべて半角文字にしましょう。これでさらに汎用性アップ?GDI系、DirectX系、OpenGL系とWindowsで使用されている描画処理であればそれなりに対応できるようになったような気がします。個別に見ればうまくいかないパターンはいっぱいありますが、古いゲームであればウィンドウサイズの変更ができるものがたくさんあると思います。新しいものだとDirectX11とかになるとグラフィックカードが対応していないと動くゲームがないので組み込みができる状態ではないのが悲しいです。いうものを作っているとちょっと気になっているのは「WindowsのADVシステムの中で初めてウィンドウサイズを変更することができ、かつ線形補間ができるもの何か?」という疑問だったりします。するとOpenGLのテストで使っていたプログラムがそれなのでは?という思いさえあります。したトリビアになりそうな気がすることですね。似たような疑問としてはたとえば「初めて音のコーデックとしてOggVorbisを採用したADVシステムは?」とか。ADVシステムWikiでも作ったらこういう話題も集まるのでしょうかね。私の場合はプログラマとしての単なる興味ですので意味はほとんど無いとは思いますが。コメントをキャンセルメールアドレスが公開されることはありません。気になるプログラムネタや数学ネタがあったら書き込みたいのだが残業が長すぎて眠気が全くとれず体調があまりよくない。過労などでぶっ倒れるかもしれない。あと、さすがに独り身が寂しいのでなんとかしたいと考えてはいるのだが...。アクセスカウンタアクセス数:スポンサーリンクモバイルバージョンに。