8

他の言語で数年間開発した後、ISO C ++ 11で導入された優れた機能のいくつかにより、C++に戻りました。パブリックAPI(共有ptr、ラムダフレンドリーなど)でこれらの新機能を利用するライブラリ(DirectX / OpenGLベース)はありますか?

編集:まだ完全にリリースされていない仕様でライブラリが商用利用できるとは思わないので、ライブラリもベータステータスになる可能性があります。

4

5 に答える 5

1

あなたが望むものに最も近いのは、おそらくSFMLです。これは、OpenGLの周りの非常にクリーンなオブジェクトラッパーであり、多かれ少なかれ最新のC++イディオムを使用しています。

ただし、C++11 を使用しておらず、単に移植するには大きすぎます (グラフィックスに加えて、サウンド、ネットワークなどを含む)。

ただし、C++11 への増分 API 更新の優れた基盤として機能すると思います。

于 2012-04-26T23:03:38.677 に答える
1

私の知る限り、完全な C++11 コンパイラはまだありません。G++ はかなり近いですが、まだありません。待つことをお勧めします。その言語を勉強するのは理にかなっていますが (たとえそれが利用できなくても)、ほこりが落ち着くまでには数年かかると思います.

私の知る限り、「高度な」言語機能 (c++03 に存在していたすべての機能を含む) をグラフィック ライブラリで使用する場所はほとんどありません。ハードウェア リソースをフルに活用しようとすると、「プログラミング カンフー」を使用する意味がありません。他のことを心配することになり、KISS 原則が優先されます。それか、KISSの原則が再び優先される、ある種の非常に特定の心を破壊する三角関数の悪夢に飛び込むことになります。

私の知る限り、単一言語のためにグラフィカル API を変更する価値はありません。複数の言語で利用できることがより重要だからです。これは特に OpenGL に当てはまりますが、DirectX でさえ「ファンが作成した」バインディングがいくつかありました。

現時点では、既存の 3d API 上で動作するカスタム フレームワークを開発する際に、必要な機能を自由に使用できます。共有/弱いポインターは、リソース管理に役立ちます。ただし、機能はブーストで利用できるため、そのために C++11 を利用する理由はありません。

- 編集 -

Qt 5 はC++11 をサポートすると言われています。技術的にはOpenGLを使用するグラフィカルライブラリです...

于 2012-04-26T23:00:22.033 に答える
1

たとえば、使用を妨げるものは何もありません。任意のコードのラムダ、自動、および初期化リスト。

Gtkmm とその親戚 ( Cairo C++ バインディングを楽しむことができます) にはクリーンな C++ インターフェースがあり、必要に応じてラムダと auto を使用できます。ラムダをシグナル ハンドラとして使用できること、および Gtk スマート ポインタから変数を初期化するときに auto を使用できることは非常に便利です。

また、グラフィカル コードは多くの場合、アプリケーションの非常に小さな部分であり、その他の部分については、完全な標準ライブラリで適切な C++ を使用できます。

それ以外では、C++11 のサポートは完全ではありません (Visual Studio ははるかに遅れており、g++ のサポートはまだ完全ではありません)。そのため、C++11 用に設計されたライブラリはまだ提供されていません。

あなたが自分で作ってみることを妨げるものは何もありません:)

于 2012-04-26T22:56:25.967 に答える
0

C 互換 API であるため、OpenGL では使用できません。

DirectX に関する限り、ラムダなどの適切な言語機能を不要なときに含めるためだけに API をあちこち変更するつもりはありません。C++11 コンパイラは、標準の以前のリビジョンと比較してまだ一般的に使用されていないため、一部の開発者のみが使用できる API を作成するのは非常にばかげています。

何千、何百万もの人々が API を使用している場合、API を変更することには幅広い影響があります。API関数がきれいで光沢があるという理由だけでラムダをAPI関数に追加するのは、非常に無責任です。それに加えて、実際に使用している人を気にする場合は、新しいバージョンごとに API を壊すことができるわけではありません。

EJDIT:

私は最初に質問を誤解しました。C++11 は非常に新しいため、ユーザーベースが大幅に制限されるため、既存のライブラリに対する API の変更はまだない可能性があります (私が知る限り、現時点では完全な機能を備えた C++11 コンパイラはありません。私たちのほとんどがまだそれを使用していない場合でも)。

一部のコメント投稿者が正しく指摘したように、私は最初の回答が狭すぎました。あなたは、ベータ版が受け入れられると付け加えました。API を大幅に変更して C++11 の新機能を組み込んだライブラリをまだ知りません。以前の点はまだ有効です。

API 関数のシグネチャを変更すると、下位互換性が失われるため危険です。これらの変更が到着した場合、変更ではなく、API への追加であると予想されます。おそらく、このあたりの誰かが、私が気付いていない既存のライブラリへのごく最近の変更を知っているでしょう。

于 2012-04-26T22:42:44.240 に答える