2013-01-01から1年間の記事一覧

EffectiveC++ チェックリスト

C++

更新:2013/2/04

17項 operator=では、自分自身へ代入するケースをチェックしよう

operator=では、自分自身へ代入するケースをチェックしよう

16項 operator=では、全てのデータメンバに代入しよう

"operator=では、全てのデータメンバに代入しよう"

15項 operator=を書くときは、*thisへのリファレンスを返そう

"operator=を書くときは、*thisへのリファレンスを返そう"

14項 基底クラスには仮想デストラクタを持たせよう

"基底クラスには仮想デストラクタを持たせよう"

JavaScriptの文法まとめ_01_変数

JavaScriptの文法の簡単なまとめです。

13項 初期化リストのメンバは、宣言した順に並べよう

"初期化リストのメンバは、宣言した順に並べよう"

12項 コンストラクタでは、代入よりも初期化を使おう

"コンストラクタでは、代入よりも初期化を使おう"

11項 メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言しよう

"メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言しよう"タイトルの通り、メモリを動的に割り当てるクラスでは、コピーコンストラクタと代入演算子を宣言します。 宣言を忘れてデフォルトの代入演算子が使われると、メモリ領域…

10項 operator newを書くなら、operator deleteも書こう

"operator newを書くなら、operator deleteも書こう"

09項 普通の形式のnewを隠蔽しないように注意しよう

"普通の形式のnewを隠蔽しないように注意しよう"

08項 operator newとoperator deleteを書くときは規約を守ろう

"operator newとoperator deleteを書くときは規約を守ろう"new,deleteをオーバロードするときには、規約を守る必要があります。

07項 メモリ不足に備えよう

"メモリ不足に備えよう"メモリ割り当て失敗時の対応を、set_new_handler()で定義できます。 set_new_handler()を使うためには、new.hをinculdeします。

06項 デストラクタでポインタメンバにdeleteを使うのを忘れないようにしよう

"デストラクタでポインタメンバにdeleteを使うのを忘れないようにしよう"メモリリークが蓄積されると、問題が起こります。 なので、デストラクタでポインタメンバをdeleteします。このとき、コンストラクタでポインタメンバに0を割り当てておくと、関係のな…

05項 newとdeleteのペアは同じ形式に揃えよう

"newとdeleteのペアは同じ形式に揃えよう"newで確保、deleteで解放 -> 正しく解放される。 new arrayで確保、deleteで解放 -> 不定。 newで確保、delete arrayで解放 -> 不定。 new arrayで確保、delete arrayで解放 -> 正しく解放される。なので、newとdele…

04項 コメントはC++スタイルで書こう

"コメントはC++スタイルで書こう"

DirectX11のピクセルシェーダでレイトレーシング 7

透過 屈折(拡大) レイトレーシングの基礎はだいたい抑えられたと思います。 次はパストレーシングには手を出さず、ラスタライズベースで何か勉強しようと思います。

DirectX11のピクセルシェーダでレイトレーシング 6

テクスチャマッピングを実装しました。

03項 mallocとfreeよりも、newとdeleteを使おう

"mallocとfreeよりも、newとdeleteを使おう"newを使ってメモリを取得したとき、コンストラクタがあればそれを呼び出します。 deleteを使って解放したとき、デストラクタはあればそれを呼び出します。 malloc/freeは、何も呼び出しません。コンストラクタ/デ…

DirectX11のピクセルシェーダでレイトレーシング 5

色のグラデーションを描画しました。

02項 stdio.hではなく、iostreamを使おう

"ではなく、を使おう"

DirectX11のピクセルシェーダでレイトレーシング 4

影を実装しました。 次はテクスチャマッピングか反射/屈折をやりたい

01項 #defineではなく、constとinlineを使おう

C++の復習のために、EffectiveC++を読みます。 できれば一日1項は読みたい"#defineではなく、constとinlineを使おう"

DirectX11のピクセルシェーダでレイトレーシング 3

三角形をレイトレーシングで描画してみました。

DirectX11のピクセルシェーダでレイトレーシング 2

誤差を消すことができました。 光線との交差判定時に球を拡大すれば、誤差がなくなります。

DirectX11のピクセルシェーダでレイトレーシング

やってみました SSSっぽい効果を再現してみたんですが、残念ながらそれっぽくないです。

「ゲームプログラマになる前に覚えておきたい技術」読み始めました

1章の荷物君を作ってみました。かかった時間は1時間10分

SSEプログラミング

SSE

SSEでは、128bitのXMMと呼ばれるレジスタが用意されます。 XMMレジスタには、下の図のように複数の変数を格納できます。

論理演算子の評価順序

C++

論理積 a && b の動作は、 aが真ならばbを評価結果とし、aが偽ならbを無視して偽を評価結果とする。

関数テンプレートと多重定義を同時に使う

C++

void print(char *s) { cout << s << '\n'; } template <typename T> void print(T arg) { arg = 0; cout << arg << '\n'; } int main() { print("Hello"); return 0; } 上のようなコードを使うとエラーが起こる。</typename>