NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

C++

CPUレイトレイサープロジェクトの進捗報告。

「Assassin's Creeds オデッセイ」やりながらゆっくりと実装しています。

「SH-RayTracer」の中間報告

github.com

Raytracerの進捗

neuliliilli.hatenablog.com の続きです。 チュートリアルを見ながらも、自分なりのスタイルで実装しております。

「2D多角形の内部、外部判定のやり方」のメモ

bowbowbow.tistory.com 判定とは一体 Aは外部にあって、Bは内部にあることが分かる。 2Dの多角形に対し、AまたはBみたいな点が図形の内部にあるか外部なのかを判別することを示す。 図形の内部に位置する点の特徴は Aは交点が偶数。Bは奇数のことがわかる。 …

超簡単なBehaviour Treeを実装してみた

Finite-State Machineとは(Behaviour Treeの以前に。。。) en.wikipedia.org Finite-State Machineは人工知能または条件による行動の分岐を実装する基本的な方法の一つである。 人工知能の各行動をモジュール化させたので、ある程度に柔軟さは持っているが…

C++のCovarient Return Typesを検証してみた

C++

en.m.wikibooks.org C++でvirtualの関数を継承(Override)したりして関数を書き直すことになると、普通はリターンタイプを同じにして返すのが普通ですね。 しかし継承したタイプのOverrideした関数のリターン値がベース仮想関数の返す型を継承としたものとな…

C++の類似デストラクタ(Pseudo-Destructor)のメモ

C++

Pseudo Destructorとは Pseudo Destructorは、単語通りに「類似」のデストラクタです。 テンプレートプログラミングなどをして、型引数 Tがデストラクタを持っているかないかにかかわらず挙動を同じにさせる時に良く使われるらしいです。 クラスではないタイ…

imguiで日本語文字を出力するためにOSからのフォントを読み込みしたこと。

github.com imgui(厳密にいうとDear ImGui)というGUIライブラリーはC++環境でUI窓を作らせてくれる便利なライブラリです。QtまたはNana、Juceなどに比べればちょっと違った構造を持っていますが、プロトタイプまたは既存のビデオゲームなどでのデバッグUI…

Windows+VS環境でabort()をハンドルする方法

C++

やり方 Windowsでのabort()は基本的にはSIGABRTというシグナルを出します。 -NIX系列のOSではsigactionなどの関数でシグナルをハンドリングすることが出来ますが、Windowsのデバッグ環境で呼び出されるabort()から出るシグナルをハンドリングは以下のような…

nlohmann::json「JSON for Modern C++」の浮動小数点数の減らし方のメモ

C++

はじめに github.com nlohmann氏のJSONライブラリである「JSON for Modern C++」はC++環境でのJSONシリアルライズ文字列を読み込みするときに有用に使えるライブラリです。 速度面としては「RapidJSON」のようなライブラリには勝てないんですが、STLの操作面…

Modern C++ Design Chapter 2 Memo (1)

C++

2.2 Partial Template Specialization クラスに対しての部分特殊化は通じるが、メンバー関数や一般関数での部分特殊化は出来ない。 関数をテンプレートに対して部分的に特殊化したい場合なら、以下のようにオーバーローディングをするしかない。 template <class T, class U> T</class>…

C++静的分析ツールのCppDependを使用してみた。

C++

CppDependとは www.cppdepend.com CppDependはCまたはC++のプロジェクトのコードを分析してコードの維持管理を容易くできるようにする分析ツールです。これを使うによって下記のことが把握できます。 コードの総量(LOC)が把握できる。 総コードとコメント…

C/C++のビルド過程のメモ(The C++ Build Process Explained)

序文 C++のビルド過程が忘れつつありましたのでそれに関する良い文書を探し、復習を兼ねてメモしてみました。 参照リンク github.com 本文 1. Overview C++のビルド過程は既存のC言語のビルド過程に基づき築かれている。 C++のビルド過程中にリンギングはコ…

Chapter 3 Typelists メモ (1)

C++

Typelists Typelistというのは支援する値に関した一連の型をリスト化して提供する道具である。3章ではこのTypelistを実装する。 Typelistが有用に使用されるところは、Abstract Factoryか、Visitorパターンでよく使われる。 3.2 Defining Tyeplists ~ 3.6 I…

C++で大きな整数の掛け算を実装してみよう。

C++

実装した理由。 アルゴリズムの本を呼んで勉強していたところ、物凄く気になってやって見たかったものがあったからです。 「からツバ法」 カラツバ法 - Wikipedia これによって大きな整数たちの掛け算の計算コストを にすることが出来ます。 以前の力任せで…

Chapter 1 Memo (1)

C++

1.5 Policies & Policy Classes Policy Classes : Determine arbitary but specific small behavior, but different from dynamic run-time interface. Each Policy classes are bound to compound user-custom type as template on compile time. This clas…