Visual Studio 2015でDirectXシェーダとC++コードを処理していますので、コードを1つだけ作成したいので、マクロを使用して演奏を始めました。コード。Visual StudioのHLSLプリプロセッサ2015
Visual StudioのHLSLプリプロセッサは、C++プリプロセッサとは少し異なります。それは可変的なマクロをサポートしていません。一方、基本的な作業は同じです(documentation参照)。 すべての用語(SimpleVertexDefinitions、STATIC_TRAITS_DECLARATION、CONTEXT_MEMORY、PARSER_MEMORY)はマクロある
STATIC_TRAITS_DECLARATION SimpleVertexDefinition(PARSER_MEMORY, CONTEXT_MEMORY)
は、すべてが正常に動作します:
私の問題は、私は次のコードを使用する場合ということです。しかし、私はマクロ
#define DECLARE_VERTEX_SHADER_INPUT(type) STATIC_TRAITS_DECLARATION type##Definition(PARSER_MEMORY, CONTEXT_MEMORY)
DECLARE_VERTEX_SHADER_INPUT(SimpleVertex)
に従うことによってそれを定義しようとしたとき、私は
- C++プリプロセッサマクロ連結が正常に動作します
- それをコンパイルするためには問題ないところで
Error X1516 not enough actual parameters for macro 'SimpleVertexDefinition' Error X3000 unrecognized identifier 'SimpleVertexDefinition'
を得るに他のhlslコードで。
誰かが私は私のマクロはdocumentationに従って書かれていることを信じているので、間違っているものを私に説明できるならば、私は喜んでいるだろう...
誰かがそれを確認できますか? – user4663214