C++

シェーダ(HLSL)でリアルタイムにベクターイメージの描画を行う

開発の環境は次の通りです。 DirectX 9、GeForce 8600 GT、Visual C++ 2010結論から言うと実用に耐えうるものは作成できませんでした。 これ以上作成を続けても労力に見合ったものが作れる気がしないので中止します。実用にはなりませんが、なんとなく公開し…

boost::gilでpng画像を操作する プロジェクトへの追加、サンプル作成編

boost::gilでpng画像を操作する インストール編 - モデラート - C#とゲーム開発と雑記の続き VisualStudioでコンパイルを通す、警告を消してしまう話とサンプルコードです。 ※各ライブラリがc:\にインストールされているとして書きます。 パスを追加 プロジ…

boost::gilでpng画像を操作する インストール編

boost::gilは画像処理ライブラリです。画像のフォーマットに依存しないプログラミングができます。 ただしpngを読み書きするには別途libpngをインストールしてリンクする必要があります。 以下Windows環境へのインストール、ビルド手順です。 インストール&…

JavaCCとJJTreeを使ってjavaコードをC++へ変換 その2

第1回目 前回のエントリにあった、System::new_array/System::delete_arrayの実装について説明します。 javaでは以下のように要素の数が異なる配列の作成が可能です。 int v[][] = { { 0, 1, 2}, { 0, 1} }; これはC++では以下のように表現できます。 int **…

PNG画像データの透過判別

PNGの画像データにtRNSチャンクがあるかどうか判別するコードです。 tRNSチャンクがあるという事は、透過PNGという事です。 ファイルから読み出しメモリ上にあるデータを探索します。 //void* fileBuffer; メモリに展開された画像データの先頭を示すポインタ…

JavaCCとJJTreeを使ってjavaコードをC++へ変換 その1

これはjavaのコードをC++のコードへ変換するために必要な項目をまとめたメモです。(随時修正してます。) 社内用のトランスレータなのでいろんな制限があります。 javaのクラスライブラリは使えない。 コードはC++にそのまま持っていけそうな書き方しかできな…

代入演算子、複合代入演算子のoperatorオーバーロードの戻り値型

C++

忘れるのでメモ。 代入演算子、複合代入演算子をオーバーロードする場合戻り値の型は参照型にする。 代入を伴わない四則演算などはコピーを返す。 class integer{ private: int _a; public: operator int(){ return _a; } integer( const int& _int ): _a( _…

#include "stdafx.h"を書かずに済ませるには"必ずインクルード"を使う

fatal error C1020: 予期しない #endif です。 - モデラート - C#とゲーム開発と雑記で書いた以下のコードが必要なのは、 Windows上のVSと別の環境で同じコードを利用したい時などです。 #ifdef _WIN32 #include "stdafx.h" #endiffatal error C1020: 予期し…

COLLADA-DOM 2.2, Bullet 2.73がリリースされてた

Bullet 2.73 COLLADA DOM 2.2 自分はBullet2.72とCOLLADA DOM 2.1をつかってて、それの記事書こうと思ってたらアップデートされてました。でも書くぜー。 まだ使い込んでなくて概要すら見えてないし特に古いバージョンを使い続ける理由もないので、アップデ…

fatal error C1020: 予期しない #endif です。

#ifdef _WIN32 #include "stdafx.h" #endif これをやると怒られるんですよね。どうやら 引用 http://tessy.org/wiki/index.php?%A5%E1%A5%E2#med01e84 "stdafx.h"をインクルードすると,それ以前のプリプロセッサ行は無視されるらしい. だかららしい。 以下…

g++でoffsetofを使うと警告

出典 NAKAMURA Minoru の日記 -- g++ で offsetof が警告に メンバ変数のオフセットを取得するマクロを使うとinvalid access to non-static data member とかいう警告がでます。 コンストラクタのあるクラスや構造体ででるっぽいです。 stddef.hのoffsetofマ…

3DCGフォーマット COLLADA

COLLADAとは、2004年のSIGGRAPH(シーグラフ、Special Interest Group on Computer Graphics)でSony Computer Entertainment Americaの技術者により開発が始まった、3Dアセットデータのためのファイルフォーマットです。 ゲームなどの3Dグラフィックスを使…

Waterサンプルをビルドする

ふと水面のシミュレーションをしてみようを思い立ち、偶然にもちょうどいいサンプルがあるということを以下のページで発見した。 3D エフェクトのスクリプティング〜 Cutting Edge DX 8 - 第 2 回目 〜 DirectX 8のころのサンプルのようで、サンプルだけでも…

デバッグカメラと物理エンジン(Bullet)の組み込み

前回は次回スレッドをやるとかなんとか言っていましたね・・・。わすれてました。 それよりも先に、デバッグカメラを使えるようにしようと思います。 勢いあまってBulletも組み込みます。 高画質で見る 今回は動画でお届け。 デバッグカメラと物理エンジンBulle…

カメラクラスとXファイルのモデルの表示

カメラクラスの作成が終わったので、モデルの表示まで行いました。 カメラクラスと言ってもDXUTのカメラクラスの足元にも及ばないようなものですが。SetPos()でカメラの座標を設定し、SetTar()でカメラの注視点を設定し、 Calc()でD3DXMatrixLookAtなんたら…

座標、ベクトルからatanを使って角度を求めてみる

ある座標(x,y)がx軸となす角度を知りたいなんてことはあると思いますが、 たとえばアナログスティックの座標を角度として扱い回転を得るなんて場合です。atanにはy/xを渡します。 タンジェント-90°から90°の値と、90°から270°の値は同じですから、 atanして…

名前をつけるのが苦手

名前をつける場面というのは多々あると思います。ゲームでキャラクターに名前をつける。 データを保存するときに名前をつける。 変数に名前をつける。 生まれてくる子供に名前をつける。(まぁ結婚する予定なんてあるわけないですけど。) どうも名前をつける…

製作3ヶ月と30日目 Zバッファ

4ヶ月も経ってるのに進歩なし。頭ん中ではゲームができてるのになぁ Zバッファを用いたプリミティブの描画です。 2Dのプリミティブ描画と異なる部分はありません。 2Dのプリミティブというのも、スプライトを使っているわけではないので、 根本的には3Dと変…

製作2ヶ月と7日目 プリミティブ表示

プリミティブの表示もシステム化してます。 ビュー空間へ座標変換したあと、Z値でソートしてから描画しようと思っているので、 とりあえず、モデルの基礎となるクラスを作りました。 今はそのクラスで適当にプリミティブ出してるだけです。 モデルごとに当た…

製作1ヶ月と27日目 joystickとかdirectinputでパッド周りとりあえず終了

前回からほぼ1ヶ月経過しましたが、パッド周りに着手&完成まで進んでいます。 実作業は5日くらいなんですけどね。 2、3日期間が開いただけでモチベーションが下がってしまうこの性格を何とかしたい・・・ DirectInputを使ってゲームパッドとキーボードの入力を…

製作1ヶ月目 わりと進んでない

とりあえずキーボードでも取得できるように。今後の予定としてはまず、モデルやカメラ周りをやってモデルの描画まで持っていきます。

製作25日目 なんかおかしいと思ったら60fps固定されてた

ついでにDirectX3Dのフォントの表示も。前回FPSの表示がおかしかったのは、算出方法がおかしかったのが原因でした。60フレーム経過ごとに60/経過時間で算出するように変更しました。 さて、ちゃんと計算できているか試すには、意図的に同期を取らなかったり…

製作18日目 60FPS固定とやる気の喪失

なんで64.8FPSよwなんかシステムばかりでつまらん。。。 3Dゴリゴリうごかしたいわぁもう眠いです今日までの成果はまた後日。。。

製作10日目 タスクシステム

タスクを実装しました。 タスクシステムのことをステートマシンとも言うそうな。よくわかりませんが。 タスクシステムは、僕がゲームプログラマになってからとても勉強になった部分です。 なしかしら状態遷移を管理しなきゃならん部分というのはあるものです…

製作8日目

DirectXのラッパーライブラリを作成し、ビルドすると 1>d3dx9d.lib(d3dx9d_36.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR は d3dxof.lib(d3dxof.dll) で定義されています。2 つ目以降の定義は無視されます。 というワーニングが。たぶんいろんなとこ…

眠い 製作3日目(since 2008/03/16)

詐欺のような更新。 でも目に見えない形ではいろいろ進んでたり。 今日は日付でいうと3日目 メニュー消して、640x480にしました。 でもCreateWindowのxとyってクライアントでなくウインドウの大きさですよね…。 TortoiseSVN使ってたりするわけなんです。 仕…

製作1日目(2008/03/16)

3Dのシューティングを作っていきます。 期待しないでください。 上海アリス幻楽団さんの、東方Projectの2次創作として作成していきたいと思います。 つまり東方の3Dシューティングという暴挙。 まずは開発環境の整備これはVC++で新規プロジェクト作成後にビ…

日本語版が公開されました。

こちらのページで今回もExpress Editionが配布され、無料で使えるようです。 自宅のマシンに開発環境を入れようとしていた矢先に、タイミングが良かったので入れてみようと思います。 DirectX9 + VC2008でゲームを作りたいと考えています。 まぁ、VC2005でも…