[PR] | 2025.04.03 10:19 |
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
category : |
カレンダー
プロフィール
最新記事
(10/15)
(06/17)
(01/09)
(12/14)
(06/20) カテゴリー
|
XOPS関連サイト「みかん箱」の運営や、OpenXOPSの開発などを行う[-_-;](みかん)のブログ。近状報告や独り言などを書きます。
| |||||||||||||||||||
PR
・・・「やり残した」というより「時間が無かった」って感じだなぁ (意味深? OpenXOPSの開発ですが、とりあえずやれるところはやったようで、 最近は落ち着いてきています。 ピークはいつだったのかと聞かれると難しいですが、超ハイペースで 作業できていた時と比べて、開発ペースが落ちていることは認めざる 負えません。 残るは、OpenGLコアを載せて、人と弾の当たり判定を作り直したら ひと段落かな。 それと、血などの描画サイズが違うとか、一部効果音の再生音量が 異なるとの報告も頂いてるいるので、その辺も修正したりとか。 本来は相違点ゼロを目指すべきですが、さらなる改良(相違点の改善) が難しいレベルに達しつつあります。 これ以上本家XOPSを再現するのは、技術的に不可能だったり、ある いは手間と時間が掛かり過ぎるため現実的ではなかったり。 最も分かりやすいのは、人とマップの当たり判定とか、他多数。 そろそろ開発から次のステップに進む時なのかもしれません。 OpenXOPSを、いかにして世の中に広めていくかを真面目に考え ないといけないですね。ユーザーコミュニティ(掲示板?)の用意は 必須だろうなぁ。 OpenXOPSのニコ動向けの動画について、実は既に3本目の動画も ある程度ネタを思い付いているのですが、やはりネタ仕込みをする 時間がありませんorz (1本目・2本目にコメントを残して頂いた方々、ありがとうございます。) 4月1日のエイプリルフールも色々考えていたのですが、やはり実行 する時間がなさそうです。
突然ですが、4月から名古屋に住むことになりました。 各所で公言している通り今は東京に住んでいますが、諸事情により 3月中に名古屋に引っ越さなければなりません。 「荷物」という名のガラクタを全部捨てて、物を減らさないとorz 2月22日に公開したOpenXOPS 1.011ですが、バグがあるようです。 AIの「手榴弾投げ」パスに対する処理について、正しい高さに投げない ようです。 一部標準ミッションのプレイにも支障が出るレベルで、場合によっては 上手く動作しないaddonもあるかもしれません。 不具合自体は初歩的なミスだったので解決は容易だったのですが、 修正したバイナリ版の公開は、次回バージョンアップ時に合わせたい と思います。 全く関係ないですが、色々な経緯で去年12月から務めさせて頂いている Invisible Alpaca(IA)のアドバイザーについて、自分は少々勘違いを していたようです。 就任当時の記事では、務めさせて頂くからにはそれ相当の責任がある と考えていましたが、実際にはかなり緩い雰囲気でした。 あまり細かいことは考えずに、楽しむことを最優先でやっていこうと 心を改めることにしました。
このブログ初のOpenGLネタです。 OpenXOPSの件で試しに使ってみると、ハマった点があったのでメモメモ。 OpenGL 1.1でテクスチャをGPUに転送する場合、glTexImage2D()関数が使えます。 複数のテクスチャを使う場合も、その都度glTexImage2D()関数で転送することも 不可能ではないですが、枚数・種類や切り替えタイミングが増えるとパフォーマンス に影響します。 そこで、OpenGL独自の「テクスチャオブジェクト」と呼ばれるものを作成し、予め必要 なテクスチャを転送しておくことで、(毎フレーム大量のテクスチャ情報を転送する必要 がなくなり)パフォーマンスが向上します。 glGenTextures()関数でテクスチャオブジェクトを作成、glBindTexture()関数を用いて バウンド(指定)します。後はglTexImage2D()関数で転送します。 毎フレーム描画する際に、必要に応じて再度glBindTexture()関数を呼び出せば、 予め設定したテクスチャを指定できるっといった感じです。 テクスチャオブジェクトは、不要になった時点でglDeleteTextures()関数で解放します。 (OpenGLの詳しい使い方は、他の文献を参考にしてください。) 何も知らずに、逐一glTexImage2D()関数でテクスチャを転送する設計で作ってしまい ました (汗 描画の高速化を試みるため、テクスチャオブジェクトを活用することにしたのですが、 うまくテクスチャが読み込めません。 VC++のデバック機能を活用して色々調べた結果、テクスチャオブジェクトを作成する glGenTextures()関数の動作がおかしそうだと気が付いたものの、サンプル通りの 関数呼び出し手順や引数でも動かず困っていました。 各参考文献と明らかに異なる点は、GLUT(OpenGL Utility Toolkit)を使う前提の サンプルが多い中、自分は使っていない点です。 まさかと思いGLUTとの関係性を調べてみると、どうやらGLUTを正しく初期化しない と動作しないとの解説を発見。 あぁこりゃダメだ っと諦めかけたその時、デバイスコンテキストを正しく用意してあげ れば動作するとの報告が。 そんなこんなで、GLUTを一切使用しなくてもWinAPIで動作させることに無事成功 したので書いておきます。 -------------------------------------------------------------------------------- //デバイスコンテキストのハンドルを取得 HDC hDC = GetDC(hWnd); //カレントコンテキストに設定 wglMakeCurrent(hDC, hGLRC); //テクスチャオブジェクトを生成 glGenTextures(1 , &textureobj); //デバイスコンテキストのハンドルを解放 ReleaseDC(hWnd, hDC); -------------------------------------------------------------------------------- (全角スペースがいっぱい入っているのでお気を付けあれ~) とりあえずこれで動きました。 経験豊富な方からすれば、もっと効率的で良いやり方があるかもしれません。 注意: 使用環境は、Windows7 VC++2008 OpenGL 1.1です。 OpenGLを始めたばかりで良く分かっていません。 よって、記述の正当性や効率・動作速度などは、自信も保証も一切ありません。
先に言っておきます。 今回はダラダラ独り言を書く回です。
OpenXOPS開発ネタなど有益(か?)な情報を期待している方は 読んでも時間の無駄です。 ご存知の方も多いように、私は日頃Yahoo!メールを使っています。 去年(2014年)7月にWEBメーラーがリニューアルしてから一気に 使いにくくクソになりましたが、それまではブラウザ上の画面も軽くて 使いやすく、迷惑メールの判別も高精度で、無料でも10GBも使える ことなどが気に入り何年も使っています。 XOPS界で活動を始めた2006年から、XOPS関係者数十名(百人 いくか?)から様々なメールを頂き、コミュニケーションを取っていま す。当然、既に連絡が取れない方々ばかりで、今でも連絡が取れる のは何人かしかいないと思います。 事故で消した数件を除き、原則として全てのメールを保存している はずです。 XOPSに限らず、様々な案件で数年前のメールを検索し引っ張り 出して調べることが多々あるのですが・・・、いやー色々な人が いたなぁっと。
えぇ、もう3月じゃん。 <急にどうした Invisible Alpaca主催の、第十回親睦戦に参加してきました。 パックは「Qq」で、私のプレイヤー名は xopsplayer でした。 マップと武器が最後まで分からず、まともな戦略を立てないまま場の 流れで適当にやっていたので、終始”動く的”になっていましたw 前にちょっと書いた通り、OpenXOPSをOpenGLに移植してみました。 (クリックで拡大) 本家XOPSはDirectX 8.1、OpenXOPSは現状DirectX 9.0cを使っています が、今回グラフィック周りをOpenGLに乗せ換えてみました。 OpenXOPSはRev.55を元に、グラフィック周りをOpenGL 1.1に移植して います。 コンパイル環境はVC++2008です。 基本的にはD3DGraphicsクラスをごっそり入れ替えただけで、他の部分は 殆ど触れていません。 OpenGLとか初めて触ったので、色々分からないことがたくさんあって大変 でした。 にしても、初めてOpenGLを使って作った3Dゲームで、いきなり XOPSレベルのFPSゲームになるとは・・・。 上の画像ではうまく誤魔化していますが、実は致命的な問題点が2点あり ます。 ・テクスチャは.bmpファイルと.ddsファイルしか対応してない ・システムフォントの表示に非対応 前者は、テクスチャの読み込み部分を独自に書いているためです。その フォーマットを選んだ理由は、とりあえずTENNKUU氏のグラフィックデータ に対応させるため。 残念ながら殆どのaddonは、正しくマップが表示されません。 まともに使うならば、llibjpegとlibpngを乗せるか、OpenCVでも使うべきだ と思います。 後者は、OpenGLをやったことある人なら分かる通り、Windowsに依存す る部分で、なんか面倒くさかっただけ。 まぁ、標準ミッションプレイするだけなら、ブリーフィング文章とかイベント メッセージくらい読めなくても大して問題ないですし。 これら以外にも細かな不具合がありますが、まぁ近いうちに修正できるで しょう。きっと。 なお今回はVC++を使いましたが、BorlandC++でもそのままコンパイル できました。 さらに一部ヘッダーファイルを追加すれば、GCC(MinGW使用)でも無事 にコンパイルできるようです。 今回の成果物であるOpenGLのソースは、近いうちにOpenXOPS自体にも 載せる予定です。 標準では、今まで通りDirectXのプログラムをコンパイルする設定にしておき、 定数を変更することでOpenGLを有効化してコンパイルできるようにする つもりです。
※過去のブログ記事は 原則として編集・修正していません。 | ||||||||||||||||||||
△ TOP |