C、C++内の構造体またはクラス内のパディングを計算する方法に関する情報が見つかりません。構造体/クラスデータの整列とパディングのアルゴリズムですか?
HLSLには、「定数変数」と呼ばれるデータ構造があり、それは#pragma pack (4)
を有効にしたC構造体に非常によく似ています。 HLSLの定数変数に関する詳細はHere is a linkを参照してください。
私が抱えている問題は、構造体フォーマット記述子を作成しようとすることです。 HLSLコードを解析した後、定数記述子には定数変数structに含まれるデータ型に関する情報が含まれます。各メンバ変数のデータ型、オフセット、構造体の合計サイズを記述します。私が抱えている問題は、パディングのために構造体の最終サイズを決定することです。
これのアルゴリズムがあれば、それをコード化して、HLSLの「定数変数」の実際の埋め込みサイズを計算できるはずです。問題は私がそれが何であるかを知らず、どこにそれを見つけるべきかも分かっていないのですか?
あなたのやりたいことははっきりしません。あなたは "実際の詰め物の大きさ"を知りたいと言っていますが、次にsizeofの何が問題なのですか? –
実行時またはコンパイル時にこれを実行しようとしていますか?または、HLSLを処理し、HLSL定数の適切な埋め込みを持つC/C++オブジェクトを生成するツールを作成しようとしていますか? –
コンパイラを使って理解してみませんか? sizeofキーワード、offsetof()マクロ、およびコンパイラがサポートする#pragmaを使用して、パッキングを変更します。 #pragma packはMSVCでサポートされています。 –