サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
sygh.hatenadiary.jp
2016年2月にVulkanの正式仕様とSDKがリリースされ、その後NVIDIAやAMDなど大手GPUベンダー各社からもPC向け正式ドライバーがリリースされ始めているので、そろそろ試してみることにしました。まずはシェーダーのコンパイラーまわりから入ります。ちなみにVulkan仕様とSDKは、最初の正式リリース以降かなり頻繁にリビジョンアップが続けられています。 LunarXchange - The source for Vulkan development tools (sponsored by Valve) Vulkan用GLSLコンパイラー Vulkan SDKにはGLSLをコンパイルしてSPIR-Vを出力することのできるオフラインコンパイラー「glslangValidator」が付属します。 32bit版 (x86) は下記にインストールされます(Windows環境)。 %VK_SD
(これは2010-05-04に書いた故OCNブログの記事を加筆修正したものです) 2015-12-03追記: Visual C++ 2015にも言及するように修正しました。 VC++ 2008までは、「ツール」→「オプション」→「プロジェクトおよびソリューション」→「VC++ディレクトリ」で設定できていた、全プロジェクトというかコンパイラーやリンカーに対するグローバルな「追加のインクルード ディレクトリ」や「追加のライブラリ ディレクトリ」などのことです。 VC++ 2010以降では、このグローバル追加ディレクトリの編集をIDEからGUIを使って行なうことができなくなっています(厳密にはできないわけではありませんが、完全互換ではありません)。 以前と似たようなUIによる設定機能は、「プロジェクト」→「<プロジェクト名>のプロパティ」→「構成プロパティ」→「VC++ディレクトリ」に移動してい
(これは2011-02-12に書いた故OCNブログの記事を移植したものです) 特定の拡張子(例えば.dat)のファイルを、下位のフォルダ内のファイルを含めて再帰的に削除したいとき、コマンド プロンプトでは del *.dat /sとすればいいんですが、問答無用で即コマンドを実行してしまうのが怖い。 Windows PowerShellでは-WhatIfオプションが存在するので、実際にコマンドを実行しないで、仮想的な実行結果の確認ができるようになっています。 PowerShellで再帰的削除の仮想結果を確認するには、 Get-ChildItem -Include *.dat -Recurse | del -WhatIf とします。こうすれば、削除処理自体は行なわないで、 WhatIf: 対象 "~.dat" に対して操作 "ファイルの削除" を実行しています。 という確認メッセージが出力され
(これは2012-06-05に書いた故OCNブログの記事を移植したものです) Visual C++のMFC拡張DLLを使って名前空間レベルのグローバル関数・グローバル変数やクラスそのものをエクスポートするとき、以下のような感じでマクロを使って宣言部を修飾してやれば簡単にエクスポートできます。 extern AFX_EXT_API void MyGlobalFunc(); extern AFX_EXT_DATA int g_myGlobalVariable; class AFX_EXT_CLASS MyClass { ... }; 原理は単純で、DLLをビルドするときは _AFXEXT マクロが定義されるので、afxv_dll.h の定義を見れば分かるように、 AFX_EXT_API マクロが AFX_API_EXPORT(つまり __declspec(dllexport))になり、 AFX
(本記事の内容は執筆時点の暫定仕様に基づくものです。実際の最終製品版とは一部異なる部分があります) GDCの開催された2015年3月にはすでにDirect3D 12 (DirectX 12) の暫定ドキュメントとVisual Studio 2015 CTPが公開されていたのですが、肝心の実行環境であるWindows 10評価版用のWDDM 2.0対応ドライバーがWindows Update経由でしか取得できず、また新しいWUはプロキシ経由で正常に動作しない現象が出ていたため、Direct3D 12の評価はしばらく見送っていました。 その後、4月末にWindows 10 Insider Preview Build 10074、Visual Studio 2015 RC、そしてWindows 10向けのNVIDIA GeForceベータ ドライバーのスタンドアロン版が相次いでリリースされたため
(これは2010-09-24に書いた故OCNブログの記事を移植したものです) ちょっとしたマイナーテクですが、C++においてクラスのメンバー変数をコンストラクタでゼロクリアする際、下記のように書けます。 class SomeClass { struct Vector3 { float x, y, z; }; int m_intVal; double m_doubleVal; float m_floatArray[4]; const char* m_charPtr; Vector3 m_vector; public: SomeClass() : m_intVal() , m_doubleVal() , m_floatArray() , m_charPtr() , m_vector() {} }; C++ではコンストラクタにおいて、:に続く初期化子リストとして各メンバーの初期化を実行することが
(これは2011-09-20に書いた故OCNブログの記事を加筆修正したものです) 個人的にグラフィックス プログラミングが好きで、仕事でも趣味でもDirectXやOpenGLを使っているんですが、OpenGL/OpenGL ESの不甲斐なさにそろそろ愛想が尽きてきました。 具体的にDirectX (Direct3D) と比べてOpenGLのどこがダメなのか、今回はそれぞれのシェーダー言語(シェーディング言語)であるHLSLとGLSLを比較しながら、OpenGLおよびGLSLの使いづらさを列挙していきましょう。 エフェクト 普通はHLSLもGLSLもシェーダーステージごとにプログラムのソースファイル(またはソースコード文字列)を分けてコンパイルしますが、HLSLというかDirect3Dでは「エフェクト」と呼ばれるフレームワークライブラリを使うと、頂点シェーダーもジオメトリ シェーダーもピクセ
DirectX SDKは、DirectX 11.0対応の「June 2010」がリリースされた後、まったく新しいバージョンが出ない時期が続いたんですが、Visual Studio 2012にバンドルされているWindows SDK 8.0において、DirectX SDKはWindows SDKと統合されました。 Windows SDK for Windows 8 – Windows app development Where is the DirectX SDK? - Windows applications | Microsoft Docs 昔(DirectX 9や10.xの時代)はかなり頻繁に、それこそ2、3ヶ月おきぐらいにDirectX SDKが更新されていたんですが、今後はDirectX APIの更新はWindows SDKの更新と同程度の頻度になるようです(つまりWindowsの
(これは2013-05-13に書いた故OCNブログの記事を加筆修正したものです) Windowsストア アプリ(Windowsランタイム アプリ、WinRTアプリ)や、Outlook.com、OneDrive(旧SkyDrive)などで採用されている、Modern UI(旧称Metro UI)は、他のMS製デスクトップ アプリでもスタイルとして採用されていて、Visual Studio 2012/2013やOffice 2013はかなりすっきりしたデザインになっています。タイルUIとかフラットUIとかいう呼称もあります。Windows 8のデスクトップ用Win32コモン コントロール自体も、XP/Vista/7のグラデーションや半透明効果を多用した比較的リッチで立体的なLuna/Aeroコントロールとは趣を変えて、シンプルな外観のコントロール(内部名はAero2らしい)になってます。実はI
MicrosoftはWindows Vistaで追加・変更されたいくつかのフォルダーや新しいセキュリティモデルに関して、下記のガイドラインを公開しています(英語)。 Windows File System Namespace Usage Guidelines ※2016-03-21追記: 上記はすでにリンク切れしてしまっているようです。ガイドラインどこ行った…… 仕方ないのでInternet Archiveのリンクを貼り付けておきます。PDF/XPSもアーカイブされているようですが、利用は自己責任でお願いします。 Download Windows File System Namespace Usage Guidelines from Official Microsoft Download Center (Internet Archive) 現状では英語版しかなく、公式に日本語に訳した版をぜ
世には4つのカラーチャンネル(Red, Green, Blue, Alpha)をサポートする画像フォーマットは数多あるのですが、整理も兼ねて Direct3D や OpenGL のテクスチャ フォーマットとの関連に言及しながらまとめてみようと思います。 早速ですがいきなりサンプルコードです。 #include <cstdio> #include <conio.h> #include <d3d9.h> #include <gdiplus.h> struct Byte4 { BYTE b[4]; }; int main() { const D3DCOLOR color1 = D3DCOLOR_ARGB(4, 3, 2, 1); // ARGB 順で指定。 const COLORREF color2 = RGB(3, 2, 1); // RGB 順で指定。 const RGBQUAD color
このページを最初にブックマークしてみませんか?
『syghの新フラグメント置き場』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く