何とかして近代的なC++の言語機能を使ってシェーダを書けないか、色々な方法を試します これは2024年11月9日に行われた Kernel/VM探検隊@北陸 Part 7 での発表動画です 発表動画 : https://youtu.be/flH2Y6XoDZY
何とかして近代的なC++の言語機能を使ってシェーダを書けないか、色々な方法を試します これは2024年11月9日に行われた Kernel/VM探検隊@北陸 Part 7 での発表動画です 発表動画 : https://youtu.be/flH2Y6XoDZY
はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。本連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし紹介していくことで、今のC++言語の姿を理解していただきます。 対象読者 かつてはC++をたしなんでいたという方 今からC++言語を始めるという方 モダンなプログラミング言語のパラダイムに興味のある方 必要な環境 本記事のサンプルコードは、以下の環境で動作を確認しています。 macOS Sonoma/Windows 11 Xcode Command
目次 目次 「戻り値型の後置記法」って何? 何が嬉しいの? 問題点 「戻り値型の後置記法」って何? C++11から導入された言語仕様です。 タイトルの呼び方は自分が勝手に使っているだけで、英語圏だと「trailing-return-type」がよく使われるらしい。 cpprefjp.github.io この仕様を使うと例えば以下のようなコードが int Add(int a, int b) { return a + b; } このようになります。 auto Add(int a, int b) -> int { return a + b; } 何が嬉しいの? この仕様はC++のメタプログラミングで戻り値型の推論を簡単に行う目的で使用されます。 なんだ、そんなC++上級者のための機能なんて下々の人間には関係ないじゃん、とお思いかもしれませんが、この機能にはもう一つわかりやすい大きなメリットがある
はじめに Turing UXチームでソフトウェアエンジニアをしています佐々木 (kento_sasaki1) です。Turingは「We Overtake Tesla」をミッションに完全自動運転EVメーカーを目指すスタートアップです。 UXチームでは車載ソフトウェアの開発を行っており、ユーザーインターフェースからハードウェア抽象化レイヤに至るまで幅広い範囲を担当しています。 本記事では、ハードウェア抽象化レイヤ (HAL) のC++実装に焦点を当て、C++テストフレームワークであるGoogleTest, gMockを用いたユニットテストの導入方法について紹介します。さらに、実践編として外部の非仮想メソッドをモックする方法について紹介します。 GoogleTest GoogleTest (正式名称 : Google C++ Testing Framework)は、Googleが提供するユニッ
This site contains an original, self-contained guide to learning the fundamentals of Modern C++, intended to be the basis of a self-study course. Some Chapters depend upon material presented in earlier ones, so studying them linearly is recommended. There are also regular posts (accessible from the front page) which cover topics or areas of C++ not covered in the course. If you have any queries or
ジョブシステム (Job System) ゲームエンジンの勉強をしているとジョブシステムの話がよく出てくるので、実際にC++20で実装してみました。マルチスレッドに慣れていないため、正しいアプローチである確信はありません。重要なミスがあったら教えていただけると助かります。 コードは標準ライブラリにある機能は素直に使い、シンプルな実装を目指します。また、この記事の全てのコードはパブリックドメインとします。 これから、3つのステップでジョブシステムを実装していきます。 ジョブを並列実行する機能 ジョブ同士に依存関係を設定する機能 大きなジョブを分割して並列化する機能 この記事ではステップ1の最も基本的なジョブシステムを実装することを目標にします。 実装に入る前に、雰囲気を伝えるために、各ステップにおけるインターフェイスを示します。 // スレッド数4としてジョブシステムを作成 JobSyste
Python is among the one of the most popular programming languages, yet it's generally not the first choice when speed is required. While it can be optimized for better performance, Python is prized for qualities other than speed, such as readability, a manageable learning curve, an expansive ecosystem, and utility in both academia and business. MIT computer scientists and their colleagues, however
みなさんはC++の読み書きができますか? 自信がある方、いつ頃勉強しましたか?もし20世紀に勉強したのであれば、その知識は相当古いです。実質現在のModernC++(C++11以降のC++)とは概念上の互換性がないので脳のアップデートが必要です。 自信がない方、文法は知っているけどなんとなく使いこなせていない方、マサカリ屋にあーだこーだ言われて大混乱している方。必勝パターンを身につければもっと楽にコードを読み書きできるようになるかもしれません。 この文章の目的は、ModernC++におけるメンタルモデル(考え方)や必勝パターンをざっくりと導入することでみなさんが楽にModernC++を読み書きできるようなお手伝いをすることです。主要な内容としてはムーブセマンティクスと右辺値 とその次の章でだいたいA4換算で15ページくらい?ほかは正直流し読みしてもらえるような内容です。また、内容的にはその
Siv3D をはじめよう Siv3D をはじめよう Siv3D を学ぶ Siv3D の機能 ダウンロード チュートリアル サンプル コース API 記事 開発に便利なツール コミュニティ 開発に参加する 勉強会 イベント 協賛企業の募集 リリースノート Siv3D くん 謝辞 Siv3D(シブスリーディー)は、音や画像、AI を使ったゲームやアプリを、モダンな C++ コードで楽しく簡単にプログラミングできるオープンソースのフレームワークです。豊富なチュートリアルが用意され、オンラインのユーザコミュニティで気軽に質問や相談ができます。動作環境は Windows / macOS / Linux / Web です。 Siv3D のダウンロード | v0.6.15¶ Windows macOS (Intel / Rosetta) Ubuntu Apple Silicon (M1 - M3) は、
自分にとっての要点メモ。 Effective C++の著者のScott MeyersによるC++11/14の定番本(らしい) ※知らずに買ったら英語だったので、なんとか通読しましたが理解は随所怪しいと思われます。誤りは是非ご指摘ください。 2015/11/02追記: 日本語版が出ています。本稿は日本語訳が出る前に書いたのなので目次の訳は一致しません。ご注意ください。 https://www.oreilly.co.jp/books/9784873117362/ 第1章: 型推論 autoやdecltypeによる型推論はコードの冗長性を減らす強力な機構だが、型推論の動きをしっかり理解していないとmodern C++での効率的なプログラミングはほぼ不可能。 1: テンプレート型推論を理解しろ 関数テンプレートtemplate<typename T> void f(ParamType param)
(注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p
この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基本型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基本的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (本文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr
MesonでC++プロジェクトをクロスプラットフォームにビルドできるようにしたときのメモです。C++以外の事は分かりません・・・ 基本 コンパイラを検出する VC++プロジェクトの癖 VC++プロジェクトにヘッダを含める あるフォルダ内のファイルの列挙、ファイル名にワイルドカードを使う、等 依存ライブラリをダウンロードしてもらう CI(Travis AppVeyar) 参考文献 基本 基本的なビルドスクリプトは以下のようになります。 # 必ずproject()から始める project('test_project', 'cpp', default_options : ['warning_level=3', 'werror=true', 'cpp_std=c++17'], meson_version : '>=0.50.0') # インクルードディレクトリ指定 include_dir = i
HTTP2のライブラリとして使えるnghttp2を使うエントリです。 nghttp2のインストールは#1をご覧ください。 概要 引き続きハイレベルAPI「libnghttp2_asio」をもう少し使ってみたいと思います。 https://nghttp2.org/documentation/libnghttp2_asio.html 今回はクライアントのサンプルを動かしてみます。 GETしてみる ソースにコメントを書いてみました。 #include <iostream> #include <nghttp2/asio_http2_client.h> using boost::asio::ip::tcp; using namespace nghttp2::asio_http2; using namespace nghttp2::asio_http2::client; int main(int ar
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く