C++
開発の環境は次の通りです。 DirectX 9、GeForce 8600 GT、Visual C++ 2010結論から言うと実用に耐えうるものは作成できませんでした。 これ以上作成を続けても労力に見合ったものが作れる気がしないので中止します。実用にはなりませんが、なんとなく公開し…
boost::gilでpng画像を操作する インストール編 - モデラート - C#とゲーム開発と雑記の続き VisualStudioでコンパイルを通す、警告を消してしまう話とサンプルコードです。 ※各ライブラリがc:\にインストールされているとして書きます。 パスを追加 プロジ…
boost::gilは画像処理ライブラリです。画像のフォーマットに依存しないプログラミングができます。 ただしpngを読み書きするには別途libpngをインストールしてリンクする必要があります。 以下Windows環境へのインストール、ビルド手順です。 インストール&…
第1回目 前回のエントリにあった、System::new_array/System::delete_arrayの実装について説明します。 javaでは以下のように要素の数が異なる配列の作成が可能です。 int v[][] = { { 0, 1, 2}, { 0, 1} }; これはC++では以下のように表現できます。 int **…
PNGの画像データにtRNSチャンクがあるかどうか判別するコードです。 tRNSチャンクがあるという事は、透過PNGという事です。 ファイルから読み出しメモリ上にあるデータを探索します。 //void* fileBuffer; メモリに展開された画像データの先頭を示すポインタ…
これはjavaのコードをC++のコードへ変換するために必要な項目をまとめたメモです。(随時修正してます。) 社内用のトランスレータなのでいろんな制限があります。 javaのクラスライブラリは使えない。 コードはC++にそのまま持っていけそうな書き方しかできな…
忘れるのでメモ。 代入演算子、複合代入演算子をオーバーロードする場合戻り値の型は参照型にする。 代入を伴わない四則演算などはコピーを返す。 class integer{ private: int _a; public: operator int(){ return _a; } integer( const int& _int ): _a( _…
fatal error C1020: 予期しない #endif です。 - モデラート - C#とゲーム開発と雑記で書いた以下のコードが必要なのは、 Windows上のVSと別の環境で同じコードを利用したい時などです。 #ifdef _WIN32 #include "stdafx.h" #endiffatal error C1020: 予期し…
Bullet 2.73 COLLADA DOM 2.2 自分はBullet2.72とCOLLADA DOM 2.1をつかってて、それの記事書こうと思ってたらアップデートされてました。でも書くぜー。 まだ使い込んでなくて概要すら見えてないし特に古いバージョンを使い続ける理由もないので、アップデ…
#ifdef _WIN32 #include "stdafx.h" #endif これをやると怒られるんですよね。どうやら 引用 http://tessy.org/wiki/index.php?%A5%E1%A5%E2#med01e84 "stdafx.h"をインクルードすると,それ以前のプリプロセッサ行は無視されるらしい. だかららしい。 以下…
出典 NAKAMURA Minoru の日記 -- g++ で offsetof が警告に メンバ変数のオフセットを取得するマクロを使うとinvalid access to non-static data member とかいう警告がでます。 コンストラクタのあるクラスや構造体ででるっぽいです。 stddef.hのoffsetofマ…
COLLADAとは、2004年のSIGGRAPH(シーグラフ、Special Interest Group on Computer Graphics)でSony Computer Entertainment Americaの技術者により開発が始まった、3Dアセットデータのためのファイルフォーマットです。 ゲームなどの3Dグラフィックスを使…
ふと水面のシミュレーションをしてみようを思い立ち、偶然にもちょうどいいサンプルがあるということを以下のページで発見した。 3D エフェクトのスクリプティング〜 Cutting Edge DX 8 - 第 2 回目 〜 DirectX 8のころのサンプルのようで、サンプルだけでも…
前回は次回スレッドをやるとかなんとか言っていましたね・・・。わすれてました。 それよりも先に、デバッグカメラを使えるようにしようと思います。 勢いあまってBulletも組み込みます。 高画質で見る 今回は動画でお届け。 デバッグカメラと物理エンジンBulle…
カメラクラスの作成が終わったので、モデルの表示まで行いました。 カメラクラスと言ってもDXUTのカメラクラスの足元にも及ばないようなものですが。SetPos()でカメラの座標を設定し、SetTar()でカメラの注視点を設定し、 Calc()でD3DXMatrixLookAtなんたら…
ある座標(x,y)がx軸となす角度を知りたいなんてことはあると思いますが、 たとえばアナログスティックの座標を角度として扱い回転を得るなんて場合です。atanにはy/xを渡します。 タンジェント-90°から90°の値と、90°から270°の値は同じですから、 atanして…
名前をつける場面というのは多々あると思います。ゲームでキャラクターに名前をつける。 データを保存するときに名前をつける。 変数に名前をつける。 生まれてくる子供に名前をつける。(まぁ結婚する予定なんてあるわけないですけど。) どうも名前をつける…
4ヶ月も経ってるのに進歩なし。頭ん中ではゲームができてるのになぁ Zバッファを用いたプリミティブの描画です。 2Dのプリミティブ描画と異なる部分はありません。 2Dのプリミティブというのも、スプライトを使っているわけではないので、 根本的には3Dと変…
プリミティブの表示もシステム化してます。 ビュー空間へ座標変換したあと、Z値でソートしてから描画しようと思っているので、 とりあえず、モデルの基礎となるクラスを作りました。 今はそのクラスで適当にプリミティブ出してるだけです。 モデルごとに当た…
前回からほぼ1ヶ月経過しましたが、パッド周りに着手&完成まで進んでいます。 実作業は5日くらいなんですけどね。 2、3日期間が開いただけでモチベーションが下がってしまうこの性格を何とかしたい・・・ DirectInputを使ってゲームパッドとキーボードの入力を…
とりあえずキーボードでも取得できるように。今後の予定としてはまず、モデルやカメラ周りをやってモデルの描画まで持っていきます。
ついでにDirectX3Dのフォントの表示も。前回FPSの表示がおかしかったのは、算出方法がおかしかったのが原因でした。60フレーム経過ごとに60/経過時間で算出するように変更しました。 さて、ちゃんと計算できているか試すには、意図的に同期を取らなかったり…
なんで64.8FPSよwなんかシステムばかりでつまらん。。。 3Dゴリゴリうごかしたいわぁもう眠いです今日までの成果はまた後日。。。
タスクを実装しました。 タスクシステムのことをステートマシンとも言うそうな。よくわかりませんが。 タスクシステムは、僕がゲームプログラマになってからとても勉強になった部分です。 なしかしら状態遷移を管理しなきゃならん部分というのはあるものです…
DirectXのラッパーライブラリを作成し、ビルドすると 1>d3dx9d.lib(d3dx9d_36.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR は d3dxof.lib(d3dxof.dll) で定義されています。2 つ目以降の定義は無視されます。 というワーニングが。たぶんいろんなとこ…
詐欺のような更新。 でも目に見えない形ではいろいろ進んでたり。 今日は日付でいうと3日目 メニュー消して、640x480にしました。 でもCreateWindowのxとyってクライアントでなくウインドウの大きさですよね…。 TortoiseSVN使ってたりするわけなんです。 仕…
3Dのシューティングを作っていきます。 期待しないでください。 上海アリス幻楽団さんの、東方Projectの2次創作として作成していきたいと思います。 つまり東方の3Dシューティングという暴挙。 まずは開発環境の整備これはVC++で新規プロジェクト作成後にビ…
こちらのページで今回もExpress Editionが配布され、無料で使えるようです。 自宅のマシンに開発環境を入れようとしていた矢先に、タイミングが良かったので入れてみようと思います。 DirectX9 + VC2008でゲームを作りたいと考えています。 まぁ、VC2005でも…