実現したいこと
DirectX12の頂点バッファに可変長配列データをコピーしたい
前提
VisualStadio2022
C++でDirectX12のサンプルコードを試しています
発生している問題・エラーメッセージ
C++ オーバーロードされた関数 のインスタンスが引数リストと一致しません
引数の型: (DXApplication::Vertex *)
該当のソースコード
struct Vertex
{
DirectX::XMFLOAT3 pos;
DirectX::XMFLOAT2 uv;
};
//頂点の数はその都度変わるのでvectorを使用して頂点バッファにコピー
std::vector<Vertex>Myvertices{};
Vertex v; // 前面 v = { { -1.0, -1.0, 1.0}, { 1.0f, 1.0f } }; Myvertices.push_back(v); v = { { 1.0, -1.0, 1.0}, { 0.0f, 1.0f } }; Myvertices.push_back(v); v = { { 1.0, 1.0, 1.0}, { 0.0f, 0.0f } }; Myvertices.push_back(v); v = { { -1.0, 1.0, 1.0}, { 1.0f, 0.0f } }; Myvertices.push_back(v); // 背面 v = {{ -1.0, -1.0, -1.0,}, { 1.0f, 1.0f }}; Myvertices.push_back(v); v = {{ -1.0, 1.0, -1.0,}, { 0.0f, 1.0f }}; Myvertices.push_back(v); v = {{ 1.0, 1.0, -1.0,}, { 0.0f, 0.0f }}; Myvertices.push_back(v); v = {{ 1.0, -1.0, -1.0,}, { 1.0f, 0.0f }}; Myvertices.push_back(v); // 上面 v = {{ -1.0, 1.0, -1.0}, { 1.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ -1.0, 1.0, 1.0}, { 0.0f, 1.0f }}; Myvertices.push_back(v); v = {{ 1.0, 1.0, 1.0}, { 0.0f, 0.0f }} ; Myvertices.push_back(v); v = {{ 1.0, 1.0, -1.0}, { 1.0f, 0.0f }} ; Myvertices.push_back(v); // // 底面 v = {{ -1.0, -1.0, -1.0}, { 1.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ 1.0, -1.0, -1.0}, { 0.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ 1.0, -1.0, 1.0}, { 0.0f, 0.0f }} ; Myvertices.push_back(v); v = {{ -1.0, -1.0, 1.0}, { 1.0f, 0.0f }} ; Myvertices.push_back(v); // 右側面 v = {{ 1.0, -1.0, -1.0}, { 1.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ 1.0, 1.0, -1.0}, { 0.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ 1.0, 1.0, 1.0}, { 0.0f, 0.0f }} ; Myvertices.push_back(v); v = {{ 1.0, -1.0, 1.0}, { 1.0f, 0.0f }} ; Myvertices.push_back(v); // // 左側面 v = {{ -1.0, -1.0, -1.0}, { 1.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ -1.0, -1.0, 1.0}, { 0.0f, 1.0f }} ; Myvertices.push_back(v); v = {{ -1.0, 1.0, 1.0}, { 0.0f, 0.0f }} ; Myvertices.push_back(v); v = {{ -1.0, 1.0, -1.0}, { 1.0f, 0.0f }} ; Myvertices.push_back(v);
//MyverticesのVertexをverticesにコピー
Vertex* vertices= nullptr;
vertices = (Vertex*)malloc(sizeof(Vertex) * Myvertices.size()); int MyCount = Myvertices.size(); //ループでコピー for (int i=0; i < MyCount; i++) { vertices[i] = Myvertices[i]; } //省略 Vertex* vertexMap = nullptr; ThrowIfFailed(vertexBuffer_->Map(0, nullptr, (void**)&vertexMap)); std::copy(std::begin(vertices), std::end(vertices), vertexMap); !!!ここでエラ-!!!! エラ-メッセージ C++ オーバーロードされた関数 のインスタンスが引数リストと一致しません 引数の型: (DXApplication::Vertex *)
試したこと
固定長配列では成功し、表示されます。
座標点を動的に増減し表示しようと上記vectorにしたのですが
補足情報(FW/ツールのバージョンなど)
visualstudio2022 C++

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/06/22 22:15