我不清楚如何使用顶点结构器和绑定字符串构建D3D11\u INPUT\u ELEMENT\u DESC。然而,以下尝试可能会帮助您实现目标:
#include <thread>
#include <iostream>
const char* bin[] = {
"pos",
"col",
"normal",
"other"
};
class desc {
public:
constexpr desc() : desText(0){}
constexpr desc(const char * str): desText(str) {}
constexpr desc operator+(const desc) { return *this; }
void printName() { std::cout << desText << std::endl;}
const char* desText;
};
const int ARRAY_SIZE = 4;
template <int N, int I=N-1>
class Table : public Table<N, I-1>
{
public:
static const desc dummy;
};
template <int N>
class Table<N, 0>
{
public:
static const desc dummy;
static desc array[N];
};
template <int N, int I>
const desc Table<N, I>::dummy = Table<N, 0>::array[I] = desc(bin[I]) + Table<N, I-1>::dummy;
template <int N>
const desc Table<N, 0>::dummy = Table<N, 0>::array[0] = desc(bin[0]);
template <int N>
desc Table<N, 0>::array[N];
template class Table<ARRAY_SIZE>;
int main(int, char**)
{
for (int i=0; i < ARRAY_SIZE; ++i)
Table<ARRAY_SIZE>::array[i].printName();
}
live example