#1
by あみゃ » 6年前
現在、DirectX11での2D描画を目指しています。
以前、DirectX9のときには、以下のように頂点データの使用目的を「POSITIONT」とすることで、頂点シェーダでの処理をスキップすることができました。
コード:
D3DVERTEXELEMENT9 decl[] = {
{ 0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0 },
{ 0, 4 * sizeof(float), D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
D3DDECL_END()
};
同様の処理をDirectX11で実装したいのですが、
以下のように頂点フォーマットを指定しても、頂点シェーダでの処理がスキップされません。
コード:
D3D11_INPUT_ELEMENT_DESC layout[] = {
{ "POSITIONT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
DirectX11ではPOSITIONTを用いて頂点シェーダをスキップすることはできなくなったのですか?
また、DirectX11においてラスタライザステージ以前の処理をスキップすることは可能ですか?
現在、DirectX11での2D描画を目指しています。
以前、DirectX9のときには、以下のように頂点データの使用目的を「POSITIONT」とすることで、頂点シェーダでの処理をスキップすることができました。
[code]
D3DVERTEXELEMENT9 decl[] = {
{ 0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0 },
{ 0, 4 * sizeof(float), D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
D3DDECL_END()
};
[/code]
同様の処理をDirectX11で実装したいのですが、
以下のように頂点フォーマットを指定しても、頂点シェーダでの処理がスキップされません。
[code]
D3D11_INPUT_ELEMENT_DESC layout[] = {
{ "POSITIONT", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
[/code]
DirectX11ではPOSITIONTを用いて頂点シェーダをスキップすることはできなくなったのですか?
また、DirectX11においてラスタライザステージ以前の処理をスキップすることは可能ですか?