C++
こんなゲッターは嫌だ // 男 class Man { public: Man(float height, float weight, int32 wild) : m_height(height) , m_weight(weight) , m_wild(wild) {} // 身長取得 [[nodiscard]] float getHeight() const { return m_height; } // 体重取得 [[nodisca…
# include <Siv3D.hpp> void Main() { Window::Resize({ 300, 300 }); const Vec2 center = Scene::CenterF(); while (System::Update()) { constexpr Duration periodSec = 2s; const double rotateRate = s3d::Periodic::Sawtooth0_1(periodSec * 0.75); const double</siv3d.hpp>…
本日のギャグです。 こちらのコードを見てください。 #include <cctype> #include <iostream> int main() { using namespace std; int32_t x = 0; if (x = x + 1) std::cout << "true"; } C++で以下のコードを実行したら「true」と出力されたので、 「x = x + 1」はtrueになり</iostream></cctype>…
先日VisualStudio2022を更新した(17.7.266.26423) そしたらモジュールがビルドできなくなったので、なんでだろうってなった 以下みたいなエラー MSB3191 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\modules" を作…
ショッピングモールとかを歩いていると「niko and …」をよく見る もしあなたがC++erなら、すぐに気が付いたかもしれない。 あ、これC++のコードだって int main() { auto f = [](auto... niko) constexpr { return (niko and ...); }; static_assert(f(true,…
↑こういうのをやってみてた 方針的には以下のようなことをしていた ちなみに小難しいことはしておらずシンプルな実装でやってみてた。①反転した状態のテクスチャをあらかじめ作っておく②投影するマスクテクスチャのようなものを用意する③シェーダーでがっち…
VirtualWindow Windowsのエクスプローラーを参考に作った だいたいそれっぽい動きをしている ツールのレイアウトとかをサクッと作れるといいなぁと思っていて 第一歩という感じ ソースコード 結構ごり押し。一つ一つの挙動を書いていくしかない ちゃんとファ…
コードベースのマイグレーションみたいなものを作りました。 wandbox.org 例 以下に 1_Test.cpp 2_Hoge.cpp がありますが、これのprefixの数字をidとして、カレントバージョンから最新バージョンまで全部実行する仕組みです 1_Test.cpp #include"Migration.h…
メタクラスについて勉強してみた。 class とか structっていうキーワードを使う箇所をユーザー定義したものに変えて my_class Hoge{}; みたいに使います。 んで、 何ができるかというと 例えばC++ではstructはデフォルトpublic, classはprivateっていう話が…
C++でDIするヘッダーオンリーのライブラリを作りました。 github.com Zenject(Extenject)などから影響を受けてます。
template<class T> struct as_op {}; template<class T> constexpr as_op<T> as_obj{}; template<class T, class U> auto operator | (T* ptr, const as_op<U>& op) { return dynamic_cast<U*>(ptr); } #define as | as_obj struct Super{virtual ~Super()=default;}; struct A : Super{ }; int main() { Su</u*></u></class></t></class></class>…
仮想継承のdynamic_castは重いっぽいので ある程度固定化するとまだ速度面でマシになるっぽい wandbox.org
Chapter4 を読みました。 リアルタイムゲーム関連の話でした 固定FPSと可変FPSについての実装方針の話があったりしました。 今作ってるゲーム、可変対応できるようにdtをupdateに渡してはいるが、なんやかんや固定FPSのほうが楽だからそっちに逃げガチ 本に…
Chapter3 を読みました ddsの画像ファイルを読み込むような形に進化した。 アルファブレンドまわりのことが書かれてた。 改めてこのへんの式を見て、そうえば知らなかったかもと思った。 aX+(1-a)Y Xは前景 Yは背景 前方宣言とかの話もあった。 ちなみに私は…
Chapter2を読みました VRAMに色情報書き込んで描画しようみたいな章だったのですが、残念なことに指定されたライブラリがうまくリンクできなかった。(IDEのバージョンが違うからだと思います。) ので、仕方なく流し読み そのままChapter3も読み途中です。 本…
感謝 もうすぐゲームプログラマ3年目くらいなのですが 「ゲームプログラマになる前に覚えておきたい技術」を友人からプレゼントで頂きました。 ありがとうございます。(持ってなかったので欲しかった) ただ、2年間サーバーエンジニアしてた身からするとゲーム…
はじめに 本記事はネタである。 ハッシュドポテイトうんめなー 今日もハッシュドポテイト食べたいなー よし、作ろう 1. ポテトを用意する // ポテト struct { std::uint8_t taste; // 味 std::uint8_t fragrance; // 香り std::uint8_t freshness; // 新鮮さ…
デストラクタがvirtualでないclassの継承には注意が必要という話を聞いたことがある人もいると思いますがその話をちょっとします struct A { A() = default; ~A() { std::cout << "A destructor" << std::endl; } }; struct B:A { B() = default; ~B() { std…
音楽ゲームを作る時などに役立つ、曲と同期するための記事を書きました qiita.com
たまに動作が停止するのでなんでだーなんでだーって原因をさぐっていたら DirectX::XMMATRIXやDirectX::XMVECTOR(それをメンバにもつclassも)をスマートポインタで扱ってたのがマズかったらしい こいつらの扱いには注意が必要そうですね
ずっとやりたかったけど、MSのサンプル見てても結構めんどくさくて困ってたんです スタックオーバーフローでそれっぽいの見つけたので、ぽいぽいっと入れたらやっとできた とりあえず一安心です。 困ったときはググろうな!!
Siv3D Advent Calender 2016の記事 以前Siv3Dでゲームを作っていた時に苦労したことの改善策の一つ qiita.com
そもそもテンプレートメソッドパターンとは、以下のようにアクセスするpublicのメンバ関数内で、(純粋)仮想関数などを使用し、決められた型にはまった動作を行うようにするデザインパターンです。 class Original { protected: int m_num; virtual int cal()…
関数のオーバーロードは静的に決まることを知らなくてはまったことがあったのでメモ class Super { }; class Sub :public Super { }; void Piyo(const Super& super) { cout << "Super" << endl; } //関数のオーバーロード void Piyo(const Sub& sub) { cout …