何とかして近代的なC++の言語機能を使ってシェーダを書けないか、色々な方法を試します これは2024年11月9日に行われた Kernel/VM探検隊@北陸 Part 7 での発表動画です 発表動画 : https://youtu.be/flH2Y6XoDZY ソースコード : https://gi…

何とかして近代的なC++の言語機能を使ってシェーダを書けないか、色々な方法を試します これは2024年11月9日に行われた Kernel/VM探検隊@北陸 Part 7 での発表動画です 発表動画 : https://youtu.be/flH2Y6XoDZY ソースコード : https://gi…
概要 UE4 で HTTP リクエストを飛ばしたい場合、 HTTP モジュールを有効化し、 FHttpModule::Get で得たオブジェクトから FHttpModule::CreateRequest し、 IHttpRequest のプラットフォームのオブジェクトを得て URL 等の必要なリクエストパラメーター及び OnProcessRequestComplete 等を設定した後、 ProcessRequest する。 この UE4 の HTTP モジュールは "非同期処理" を前提に実装され、インターフェースが提供され、 examples でも非同期処理で HTTP モジュールを扱っている例が幾つか見当たる。 この記事では "諸事情により UE4 の HTTP モジュールを同期処理したい場合" に遭遇した際にどのような実装を行えば良いか整理する。 実装 同期処理でも非同期処理でも同様
はじめに この記事ではC++でジョブを並列に実行するためのジョブシステムを実装していきます。 前回 は下記のステップ1まで実装しました。 ジョブを並列実行する機能 ジョブ間の依存関係を設定する機能 大きなジョブを分割して並列化する機能 前回の記事はこちら ↓ 今回はステップ2とステップ3を実装してみます。前回と同様、この記事の全てのコードはパブリックドメインとします。 2. ジョブ間の依存関係を設定する機能 ステップ2ではジョブ間の依存関係を設定する機能を実装します。 例えば、ゲームエンジンであれば、物理演算をしている途中でレンダリングを始めてはいけません。また、スケルタルアニメーションを計算している途中にコリジョン判定をしてはいけません。このような場合には、ジョブ間に依存関係を設定する機能が必要になります。 今回の実装では、下のようにハンドルを介してジョブ間の依存関係を表現することにしま
c++でクラスをインスタンス化する際、以下のようにnewを使わない方法、newを使う方法、vectorコンテナを使う方法がある。 Hogeクラス class Hoge { private: int num; public: Hoge(); Hoge(int n); void Disp(); ~Hoge(); }; // デフォルトコンストラクタ Hoge::Hoge() { num = 0; } // 引数付きコンストラクタ Hoge::Hoge(int n) { num = n; } // メンバ変数の表示 void Hoge::Disp() { std::cout << "num = " << num << std::endl; } // デストラクタ Hoge::~Hoge() { } newを使わないクラスの初期化方法 int main() { // デフォルトコントラクタで初期化
この記事は「自動運転システムをエッジデバイスに組み込むための技術」を3回に分けて紹介するTURINGのテックブログ連載の第1回の記事「C++でOpenCV完全入門!」です。 第2回の「OpenCVをNPPにした結果→10倍高速に!」、第3回の「詳解V4L2 (video for linux 2)」もぜひご覧ください! はじめに こんにちは。完全自動運転EVを開発するベンチャー企業、TURING株式会社でインターンをしている東大工学部3年の井上信多郎です。 我々人類は、車を運転するにあたって多くの情報を目から取り入れています。目から取り入れた情報を元に、アクセル・ブレーキ・ハンドルを操作しています。 自動運転の場合、その目に相当するセンサがカメラであり、カメラから得た情報を元に車を運転することになります。カメラから得る情報とは、ずばり画像です。画像の中から信号、標識、前方車両などの必要なもの
みなさんはC++の読み書きができますか? 自信がある方、いつ頃勉強しましたか?もし20世紀に勉強したのであれば、その知識は相当古いです。実質現在のModernC++(C++11以降のC++)とは概念上の互換性がないので脳のアップデートが必要です。 自信がない方、文法は知っているけどなんとなく使いこなせていない方、マサカリ屋にあーだこーだ言われて大混乱している方。必勝パターンを身につければもっと楽にコードを読み書きできるようになるかもしれません。 この文章の目的は、ModernC++におけるメンタルモデル(考え方)や必勝パターンをざっくりと導入することでみなさんが楽にModernC++を読み書きできるようなお手伝いをすることです。主要な内容としてはムーブセマンティクスと右辺値 とその次の章でだいたいA4換算で15ページくらい?ほかは正直流し読みしてもらえるような内容です。また、内容的にはその
今まで C++ でちょっとしたウェブアプリを作る際は crow という micro-framework を使ってきました。 GitHub - ipkn/crow: Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask) How to Build If you just want to use crow, copy amalgamate/crow_all.h and include it. Requirements C... https://github.com/ipkn/crow ヘッダオンリーで使えてとても便利だったのですが、boost に依存している点があまり好きじゃなかったのと、最近 crow の開発が止まり最新の boost でビルド出来なくなってしまったので、自分で作
06 « 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 08 Luaの参考書を購入。 敵AIや関節アニメーションの制御などに使えないかと目論んでいます。 しかしなぜか簡単なテストコードを打ってコンパイルするとリンカエラーが発生。 調べてみると、どうやらライブラリファイルがVS2005でコンパイルされているため2008では使えない様子。 というわけで、自前でコンパイルすることになりました。 方法は「SNOWY CODE」様のブログ記事を参考にしました。 こうして作製したライブラリファイルで先のテストコードをコンパイルすると、今度は実行して期待通りの結果を得ることもできました。 が、今度は 1>lua5.1.lib(lstate.obj) : MSIL .netmodu
Visual Studioで、Visual C++のアプリを作っていて、ビルド時に発生したワーニングについて調査したときの情報を残しておきます。 ワーニング内容MSIL .netmodule または /GL を伴ってコンパイルされたモジュールが見つかりました。/LTCG を使用して再開始してください。リンカのパフォーマンスを向上させるためには、コマンドラインに /LTCG を追加してください。 ※ライブラリとプログラム側でコンパイル時の設定が違うと出る警告の様 Debug用とRelease用のライブラリをそれぞれコンパイルし直す必要があるかもしれない 解決策2種類見つかったので、それぞれ記載しておきます。」 その1プロジェクト > プロパティ > 構成プロパティ > リンカー > 最適化 > リンク時のコード生成 リンク時のコード生成を使用(/LTCG) を有効にするその2プロジェクト >
リフレクションは、プログラムが実行時にプログラム自身を検査する機能です。これはとてつもなく便利な機能であり、アンリアル・エンジン の基礎的なテクノロジーとして、エディタ内の詳細パネルや、シリアライゼーション、ガーベジコレクション、ネットワークのレプリケーション、ブループリント/C++ の通信といった多くのシステムを支えています。ただし、C++ は本来リフレクションがサポートされていません。そのため Unreal には、C++ のクラスや構造体、関数、メンバー変数、列挙体に関する情報を取り込み、問い合わせ、操作するための独自のシステムが備わりました。通常私たちはリフレクションのことをプロパティ システムとみなします。リフレクションはグラフィックスの用語でもあるのですから。 このリフレクション システムは、選択式です。ユーザーは、リフレクション システムから見えるようにする型やプロパティにアノ
概要 OpenCV 5.0.0をVisual Studio 2022で使用する時の手順 環境 Windows 10(64Bit) OpenCV 5.0.0 Visual Studio 2022 対象 Windowsマシン保持者 OpenCVをC++で触りたい人 PATHへの理解がある 記事を読んで出来る事 Visual Studio 2022を用いたOpenCVプログラミング 手順 OpenCVの取得 https://github.com/opencv/opencv/releases より、 https://github.com/opencv/opencv/releases/download/5.0.0-alpha/opencv-5.0.0-alpha-windows.exe をDLする OpenCVの導入 ダブルクリックで導入出来るが、 opencv build source の階層にな
11個のライブラリの設定を変更すれば、静的ライブラリがビルドできますが、以降の手順では、 念のため残り 3個の実行ファイルもビルドし、静的ライブラリにリンクされることを確認するようにしましょう。 ソリューションを構成する デフォルト状態では、Release と Debug というソリューション構成があり、 どちらも DLL としてビルドするように構成されています。 まずは、静的ライブラリをビルドするための Release_Static というソリューション構成を新しく作成しましょう。 [ソリューション エクスプローラ] 内のソリューションを右クリックして、 [構成マネージャ...] メニューを選択します。 すると下図のような [構成マネージャ] ダイアログが表示されます。 このダイアログの [アクティブ ソリューション構成] ドロップダウンリストから、 「<新規作成...>」を選択しますと
C++で新しいプロジェクトを作成するときに自分が定型的にやっていることを備忘録的にまとめました。完全に我流なので「こういうやり方もあるよ」などのアドバイスは歓迎です。 この記事中では各ファイルで説明が必要な部分だけを示しますが、全てのサンプルはgithubにおいてあります。 cpp-template: https://github.com/m-mizutani/cpp-template 前提 UNIXベースのCLIで動作するアプリケーション or ライブラリを作る コンパイルはcmakeを使用する ファイル名はソースコードが*.cc、ヘッダファイルが*.hppだとする サンプルではcpptemplate というプロジェクト名だと仮定します プロジェクト用ファイルの準備 CMakeList.txt サンプル cmakeでビルドするための設定ファイルです。このサンプルではCLIアプリケーション
デフォルトのテンプレートの問題点 Visual Studio にデフォルトでインストールされているテンプレート、 控えめに言って非常に使いにくいです。 obj などの中間ファイルがプロジェクトごとに出力される 32bit バイナリは Debug, Release フォルダに出力され、 64bit バイナリは x64\Debug, x64\Release フォルダに出力される 異なるフォルダに同じファイル名のソースがあると出力ファイルが衝突する 私が C++ の開発でプロジェクトを作成するときに いつも最初にやっていることを共有します。 Visual Studio 2017 を使って説明しますが、 最近の Visual Studio(2008以降?)であれば だいたい同じ方法が使えると思います。 プロジェクト作成 まず「空のプロジェクト」を選んでプロジェクトを作成します。 「空のプロジェクト
はじめに この記事ではC++の演算子のオーバーロードを使い慣れていない人の為のまとめとして作成しました。 C++の演算子のオーバーロード、引数や戻り値に自由が利きすぎてどうするのがセオリーなのか分からないぞ、というようなときに見て頂けたらと思います。 主に引数や戻り値を中心に据えますが、細かい機能も網羅していきたいと考えています。 私は二項演算子はグローバル関数教の信徒であり、const教の敬虔な信徒です。 優先順位の順に、演算子別に解説します。 なお、thisの型を T* const型とし、Tとは別の任意の型をUとしています。 では、早速解説していきたいと思います。 Member Selection
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く