DirectXでOBJファイル表示
こんな感じで簡単に読み込み処理が書ける。
#include "tiny_obj_loader.h" void CreateBuffer(ID3D11Buffer** io_buf, UINT in_byteWidth, UINT in_bindFlags, const void* in_data) { D3D11_BUFFER_DESC bd; ZeroMemory(&bd, sizeof(bd)); bd.Usage = D3D11_USAGE_DEFAULT; bd.ByteWidth = in_byteWidth; bd.BindFlags = in_bindFlags; bd.CPUAccessFlags = 0; D3D11_SUBRESOURCE_DATA InitData; ZeroMemory(&InitData, sizeof(InitData)); InitData.pSysMem = in_data; g_pd3dDevice->CreateBuffer(&bd, &InitData, io_buf); } void Load(const char* in_path) { std::vector<tinyobj::shape_t> shapes; std::vector<tinyobj::material_t> materials; // OBJファイル読み込み std::string err = LoadObj(shapes, materials, in_path.c_str()); if (!err.empty()) return; CreateBuffer(&g_vb, mesh.positions.size() * sizeof(float), D3D11_BIND_VERTEX_BUFFER, &mesh.positions[0]); CreateBuffer(&g_ib, mesh.indices.size() * sizeof(unsigned int), D3D11_BIND_INDEX_BUFFER, &mesh.indices[0]); }
とりあえず自分で作ったテクスチャを貼れるようにしたい。