Tech Notes

>>|
1/8

CMakeで開発したソフトを配布する方法(Windows)

CMakeはC/C++製のプログラムをビルドする際にほぼ必須と言っても良いツールだが、ビルドしたものを配布する際の注意点というものはあまり共有されていないように思う。

まさか万人がソフトウェアをソースコードからビルドするという訳にも行くまい。この記事ではCMakeを利用してソフトウェアを開発し、そのバイナリを配布する際の注意点について書きたいと思う。環境はWindowsに絞る。

とりあえずWindows向けのビルドでは殆どの場合においてMSVCかMinGWを用いるものと思うので、その2ツールを対象に解説する。

続きを読む

w除算の結合律について

久々に小ネタ。現代のGPUにはw除算と呼ばれる仕様が存在するが、これは一種の二項演算として見たときに結合律を満たすのか?という疑問について。

結論から言うと満たす。以下ではその証明を書く。

(2025/3/17追記)シェーダの挙動について不正確な点があったのでリライト

続きを読む

2Dアクションゲームの坂道判定について

2Dゲームを作るにあたり、頭を悩ませることになるのが坂道の実装である。坂の形状との交差判定自体は別に何も難しくない。 坂を滑らかに登ったり下りたりできるような挙動の実装が難しいのである。

坂道のない、矩形のブロックのみの衝突判定については別の記事で詳述しているので、まずはそちらを読んで欲しい。 (リンク) この記事で解説した「座標軸別移動衝突法」をベースに説明する。

続きを読む

2Dゲームの衝突判定と座標軸別移動衝突法(仮称)について

近年ではゲームエンジンの普及により、いたく立派な物理エンジンが気軽に使われるようになって久しい。しかし主人公が着地したとか壁にぶつかっただとかの判定は、長い間それぞれのゲーム開発者が自分の手でちょちょいと実装してきたもののはずではなかったか。

そのような自作は今も有力な選択肢であることは間違いない。また、プログラミングの入門としても恰好の題材であるように思われる。

一方で実際のところ、その実装についてネットで調べてみると悩みの声も多く目につく。思うに、実装にどんなバリエーションがあってどこさえ外さなければいいのかとか、そういうところが整理されていないのである。

この記事では最もシンプルで実装が楽な方法を紹介する。誰も名前を付けている人が居ないので、仮に「座標軸別移動衝突法」と呼ぶことにした。

続きを読む

軽量高速テキストエディタ「Lapce」が普通に日本語打てるようになっていた件

丁度1年前くらいにこのブログで取り上げた「Lapce」というエディタが大幅に改善していた。 具体的には、普通に日本語が打てるし表示できるようになった。 今もLapceでこの記事を執筆している。

去年時点ではここが本当にネックだったので目覚ましい改良だ。また、「最小化すると一発で落ちる」というバグもなくなっていた。

2024年現在、「Lapce」で日本語Google検索すると前述の記事が2~3番目くらいに出てくるのだが、その記事の内容が致命的に古いのはさすがにどうかと思ったので、現在の機能性を再度レビューしてみる。

続きを読む

C++のstd::functionは遅いらしいのでもっと高速なコールバック機構を考えてみた

C++で開発をしていると時折悩むのが、「関数を受け取る場合どのように受け取り保持するか」という問題だ。C++にはこれに対する解が3つほどある。 悩むというのは実現できなくて悩むのではなく、どれを使って実現するかを悩むのである。

  1. 関数ポインタで受け取る。
  2. テンプレートで受け取る。
  3. std::functionで受け取る。
続きを読む

ConoHaがGPUを提供し始めたので早速Vulkanで叩いてみた

この記事はConoHa Advent Calender 2023 14日目の記事です。

あのConoHaがGPUを提供し始めたらしいともっぱらの噂。 GPUをC++で直接殴る話を書いている人間としては聞き捨てならないので早速申し込んで使ってみました。

近頃の若者はGPUと言えばPythonだ、NumPyだ、CUDAだ、などと言うばかりで嘆かわしい限り。ここはひとつ、OSやGPUベンダに依存しないC/C++向け低レイヤ開発APIたるVulkanで触ってみなければなりません。

続きを読む
>>|
1/8