ツールっぽいものを作る

ずいぶん久々になってしまいましたがまだまだ頑張ります。しばらくは、サウンドプログラムの勉強も兼ねて、サウンド再生アプリ兼ツールを作成してみる。 ※ちょっと関連ある記事(d:id:p-tal:20091020) ということでまずは雛型作り。簡単にウィンドウを出してE…

プリコンパイル済みヘッダーを使う

前回の記事(d:id:p-tal:20091111)に関連して。 共通で使用するマクロやtypedef、includeファイルなどはプリコンパイル済みヘッダーとして中間ファイルにしておくと、それらを参照しているcppのコンパイル速度が劇的に速くなる。 使い方は簡単で、(1)まとめて…

とにかくincludeする

どんなプロジェクトでも使用するtypedefやマクロなどは、全ファイルにincludeしても構わないのでは・・・という点から、それを便利に行う方法を模索。『プロパティ > 構成プロパティ > C/C++ > 詳細 > 必ずインクルード』の部分にファイル名を入れておけばOK…

Androidについての書籍を購入

http://gigazine.net/index.php?/news/comments/20091027_sony_rachael/ソニエリのAndroid携帯がついに来る・・・らしい。良い機会なので発売されたらdocomo契約しようかと模索中です。 これに関連して、気が早いけどAndroidプロぐグラミングのための書籍を買っ…

#ifと#ifdefの違い

#if (x) … x が true なら実行される #ifdef (x) … x が #defineで定義されていれば実行される 実際にプログラム上で使用する機会はデバッグ表示の有無なんかがほとんど。 なお、Visual Studioの場合はDebugモード時に自動的に 「#define _DEBUG 1」 が定義…

APIからの音声再生

今まではDirectSoundを使用したwavファイル再生を行っていたけど、少しは自分で管理してみようということでサウンドAPIについて勉強してみる。方法としては、 PlaySound関数、waveOut***系API、MCI(media control interface) の三つが主ということらしい。ま…

namespaceの定義

namespaceを定義する際には、最後の「}」の後のセミコロンは不要。 namespace Test { class TestClass { public: TestClass(); ~TestClass(); }; } 今までセミコロンを付けてたけど、今後は外しておこう。でも実際のところ付けててもコンパイラが無視してコ…

DLLを作る

libファイルの作成はできたので、次にDLLを作成してみる。 まずはプロジェクトを作り、DLLの項目にチェック。 通常と同じようにヘッダを作り、出力したい関数に「__declspec(dllexport)」を加える。 クラスの場合はクラス名の前に「__declspec(dllexport)」…

libファイルを作る

ランダム数値の生成とか、今までcppのまま持ってたのをlibにしてみることに。まずlib用のプロジェクトを作成。cppとヘッダを入れてビルド。DebugフォルダかReleaseフォルダにlibファイルが生成される。この際に出力フォルダ、ファイル名を指定しておくと便利…

現在のインスタンスハンドルを取得する

windowsプログラミングをしてるとたびたびインスタンスハンドルやウィンドウハンドルが必要になってくる。たとえばゲームシーンでのみポップアップメニューを出したいとして、その時にHINSTANCEが必要になってきたり。 グローバルで置けばいいような気もする…

右クリックでポップアップメニューを表示

アプリケーションの右クリックでポップアップメニューを表示してみることに。↓こんな感じ まずは表示したいメニューをリソースから作成。 (ソリューションエクスプローラの「追加」→リソース→Menu)一番上は実際には表示されないので、ダミーということで。…

fpsと処理率

FPSを60に調整。前フレームの終了時の時間を保存し、今フレームの最後でその終了時の時間+(16ms)になるまでSleep。 正確な60fpsではないけど、これで一応OK。 void adjustFPS() { // 終了予定時間 DWORD endTime = m_prevFrameFinishTime + 16; // 予定時間…

Unicode対応のプロジェクトにする

新規プロジェクトを始めるにあたって、プロジェクトをUnicode対応にすることに。 基本的にchar型を使っていた場所でエラーが出るので、文字列の前に_TまたはLを入れればOK。 #include <tchar.h> // ----------------------------------------------------------- // </tchar.h>…

3D立体視

■最新の3D立体視デバイス「GeForce 3D Vision」でPC版「バイオハザード5」をプレイする!! 世界初の「Geforce 3D Vision」最適化タイトルがもたらす臨場感や如何に!?http://game.watch.impress.co.jp/docs/series/pcgaming/20090917_315956.html3D立体視を適…

Visual Studioのデバッグ機能

開発環境はVisual Studio 2005 を使用しているのだけれど、今更ながらデバッグ機能優秀ぶりを実感することができたので、メモ。■ 変数の値を直接変えられる ウォッチ式から直接代入ができると。 const値は変更できないっぽい。 ■ 編集およびビルドの再開 ゲ…

エフェクトの勉強ということで

エフェクトの勉強がしたくなったので、以前購入した『DirectX9 シェーダプログラミングブック』を再度読み始め。DirectX 9 シェーダプログラミングブック作者: 今給黎隆出版社/メーカー: 毎日コミュニケーションズ発売日: 2004/01/01メディア: 単行本購入: 1…

RawInputで複数のマウスからの入力を取得する

RawInputの勉強。ようやく二つのマウスからの入力を取得できるようになった。 まずは初期化。 #define WINVER (0x500) // RawInput用 #define _WIN32_WINNT (0x0501) // RawInput用 #include <windows.h> … void init() { // 現在接続されている入力デバイスの数を取得 </windows.h>…

マウスを二つ接続する(2)

d:id:p-tal:20090829の続き。通常はマウスを二つ接続したところでそれぞれの入力はあたかも一つのマウスだけがあるかのように処理される。 これはWindowsの仕様っぽい?どうやらDirectInputも同様のようで、マウスが複数あること自体がそもそもおかしい事の…

マウスを二つ接続する

マウスを二個接続してゲームに使えるかなと思い、研究開始。DirectInputでジョイパッドを複数認識する時みたいにEnumDevicesで出来るかなーと思ったけど、どうも上手くいかず。 調べてみると結構面倒みたいだ。マウスをジョイパッドとして認識出来れば複数マ…

Structure Synthで簡単3Dアート

Context Free の3D版、Structure Synthをいじってみた。Context Freeについては以前使ってみたので、(d:id:p-tal:20090805) 使い方はほぼ同じのStructure Synthでも結構楽に作成できた。 また、レンダラーのsunflowを使うと良いみたいなので、さっそく導入・…

Unicodeを使用するべき?

先日のフォント描画クラスについて。「SHIFTJIS_CHARSET」にすれば漢字が入力できる!とか思ってたけど、♡とか外国の文字は入れられないということに今更気づいた。どうやらUnicodeにすれば入力できるようだけど、プロジェクトのプロパティがマルチバイト文…

空間分割による衝突判定

今までアクションゲームを制作してきたときには、いつも衝突判定時の処理落ちに悩まされてきた。そこで、4分木を使った衝突判定について勉強してみることに。まずは理屈を把握し、実際にコーディングしてみよう。 ※参考にさせていただきました。▼マルペケつ…

フォント読み込み、描画

フォントをttfファイルなどから読み込む場合、AddFontResourceEx()を使用する。 static const char* FONTPASS = "C:/..../Judge Hard.TTF"; static const char* FONTNAME = "Judge Hard"; ... // 読み込み AddFontResourceEx(FONTPASS, FR_PRIVATE, NULL); s…

フォント文字の描画(その2)

一文字は表示できたので、文字列を描画するクラスを作成してみた。 上 : MS Pゴシック / 下 : MS P明朝▼ 使用法とか CFontString str(D3DXVECTOR2(100.0f, 200.0f), 0xffffff); str.init("テスト@test", pD3DDevice, 100, SHIFTJIS_CHARSET, "MS P…

フォント文字の描画

基本的にはASCIIコード表に対応したビットマップファイルを使って描画をしていたけど、プロポーショナルフォントにも対応させたくなったのでフォント表示について研究。テクスチャ書き込みとか久々だなーと苦労しながらなんとか成功。 フォント "consolas", …

リハビリ

休みが続いてプログラムからは離れてたけど(離れざるを得なかった感じ)、そろそろプログラムに復帰。しばらく期間が空いてプロジェクトの制作状態がつかめなくなってるので、まずはコードのリファクタリングをしつつ、全体像を再びつかんでいこう。

DQ9/宝の地図

話題になっているメタルキングが大量に出るという宝の地図。今更ながら確認してみたら持っていた。いつ手に入れてたのかは分からないけど、ゲームをしてないのにゲームが進む感じですれ違い通信の奥深さを実感。 問題点はゲームをプレイしてる人が多くなきゃ…

Context Freeで簡単デザイン

文脈自由文法のプログラムで絵描きができるContext Freeでデザインっぽいことをしてみる。 適当にさくっと作ってみてもそれっぽいものができるのがこのプログラムの良いところ。ゲームで簡単な一枚絵やテクスチャ等が必要になったときに役立ちそうな気がした…

非アクティブウィンドウでもサウンドを鳴らす

ウィンドウが非アクティブでも音を鳴らす方法を探し、そして発見。バッファのフラグに DSBCAPS_GLOBALFOCUS を入れればいいのか。 DSBUFFERDESC DSBufferDesc; DSBufferDesc.dwFlags = DSBCAPS_GLOBALFOCUS | DSBCAPS_CTRLVOLUME | ... ... ... DirectXで組…

パラメータは外部ファイルに

よくパラメータは外部ファイルで定義したほうが良いと聞くけど、いまいち利点が分からなかった。 ビルドの時間がいらなくなるということみたいだけど、まあそれくらい・・・って認識だったので。 でも最近になって自分なりに便利さがようやく分かってきた。 …