00001
00002
00003
00004
00005
00006
00013 #ifndef TK11_INPUT_LAYOUT_HPP
00014 #define TK11_INPUT_LAYOUT_HPP
00015
00016 #include "d3d.hpp"
00017
00018 namespace tk11 {
00019
00021
00039 ID3D11InputLayout_ptr create_input_layout(ID3D11Device_ptr device,
00040 const D3D11_INPUT_ELEMENT_DESC* elements, UINT num_elements,
00041 ID3D10Blob_ptr shader_code);
00042
00044
00057 D3D11_INPUT_ELEMENT_DESC make_input_element(DXGI_FORMAT format,
00058 const char* semantic_name, UINT semantic_index = 0, UINT input_slot = 0);
00059
00061
00073 template<typename T, std::size_t N>
00074 D3D11_INPUT_ELEMENT_DESC make_vector_input_element(const char* semantic_name, UINT semantic_index = 0, UINT input_slot = 0) {
00075 return make_input_element(Input_Element_Format<T, N>()(), semantic_name, semantic_index, input_slot);
00076 }
00077
00079
00083 template<typename T, std::size_t N>
00084 struct Input_Element_Format {
00086
00091 DXGI_FORMAT operator()() const;
00092 };
00093
00094 }
00095
00096 #endif