「 プログラミング 」一覧

SharpVulkan のTutorial を追加しました


SharpVulkan のチュートリアルページを書き足しました。

C# から使う Vulkan 入門
はじめに ここでは C# による Vulkan 入門を取り扱っていきます。 Vulkan は C/C++ から利用する場面がほとんどですが、 C# からも利用可能であれば使いたい場面はあるかと思います。 ここではそのために用意した...

ひとまずチュートリアル部分を一区切りです。これで SharpVulkan WPF を用いてのキューブの描画が Vulkan コントロールの中で行われるようになります。

この先の予定ですが、 SharpVulkan WPF のパフォーマンスに対して修正していく感じでしょうか。
また、SharpVulkan WPF コントロールを使わずに、でも WPF アプリケーションとして Vulkan API をたたいて描画するといったサンプルを先のページで紹介してみたりということを考えています。

まだ色々と不備が残っていますが、徐々につぶしていければと思います。
今回のチュートリアルを書き上げるまでにも 0.0.3 と初回公開時よりもバージョンが上がりました。


SharpVulkan ページ作りました


C# から Vulkan API をたたくためのラッパーコンポーネント SharpVulkan と、
C# WPF アプリケーションの中に、描画コントロールとして配置する SharpVulkanWPF コントロールを初回公開しました。

まだまだ安定しないですし、バグ大量でしょうがこれから頑張っていきたいと思います。
続きを読む




C# でアンマネージ領域のメモリコピー


単なる memcpy のようなことを、アンマネージ領域で行いたいときの話です。
Marshal.Copy が一見できるかなと期待してしまうのですが、これはマネージド配列からアンマネージドのメモリへコピーするための関数です。(オーバーライドにより逆方向も可能になってます)。

しかしコピー元もコピー先もアンマネージドのオーバーライドはありません。
これをどうするかですが、 memcpy を使用するとちょっと大変なので Win32 API の力を借ります。

CopyMemory という関数が、 kernel32 に含まれているので、これを使います。

memcpy を使おうとすると、 VCランタイムがインストール必須になってしまうのでこちらで。


Vulkan と WPF


年末年始のタイミングで Vulkan を少し勉強してみました。個人的な印象では DirectX12 よりも難しい感触がありました。
しかしながら、発表からある程度の時間が経っており、情報も比較的多くあったため三角形を1枚出せるところまで到達できました。
既に先陣を切ってくれた人が情報を公開してくれていたのが大変参考になりました。

続きを読む


コンテキストメニューについて苦戦した話


Windows エクスプローラーが表示するようなコンテキストメニューを自分のアプリケーションでも表示したいことがあります。
このときに難しいと感じた部分や罠があったので記録として残しておこうと思います。
意外にもまとめてあるページはなかったようなので、誰かの役に立ってくれれば幸いです。

現在のシステムにおいて登録済みのコンテキストメニューを表示するまでの話で、コンテキストメニューの拡張の話では無いのでご注意ください。

続きを読む


Nexus5X を Android 7.1.1


Nexus5X の端末に Android 7.1.1 の OS が配信されてきたので更新してみました。
Android 6.0.1 からの更新となり、 7.0 を飛ばしてしまった感じになりました。

更新結果

動作そのものが重くなるかなと思いましたが、逆にレスポンス良く動くようになった気がします。
そして OpenGL ES 3.2 のコンテキストで初期化できるようになったようです!今までに ES 3.2 のコンテキストで動く端末を見てなかったので感動です。

続きを読む


ドッキングウィンドウ on WPF での OpenGLView


前回の延長戦で、ドッキングウィンドウとの組み合わせを試してみました。
ドッキングウィンドウには AvalonDock (WPF Extended Toolkit 付属) を用いています。

はじめに

AvalonDock でドッキング可能なドキュメントとして、前回の カスタム版 D3D11Image を貼り付けています。
ここに OpenGL の描画をはめ込む形です。

今までのものと大きく異なるのは以下の点だと思います。

  • 独立したウィンドウになることがある(フローティングウィンドウ)
  • 表示/非表示のタイミング
  • Window に貼り付けられているわけでなく UserControl 以下

これらの条件変化によって、動きが変わるかを確認してみました。

wpf_avalondock_ogl
続きを読む


WPF で OpenGL の描画はめ込み


WPF アプリで OpenGL の描画結果をはめ込めたらいいなと思ってトライしてみることにしました。
WPF は DirectX9 で動いているため、またアプリ全体で1つのウィンドウハンドルとなっているため、従来の C# フォームアプリのように特定の部分だけ描画を任せるというようなことが難しくなっています。

続きを読む