次の単純な構造体があるとします。
struct Vector3
{
double x;
double y;
double z;
};
頂点のリストを作成します。
std::vector<Vector3> verticesList;
これに加えて、サードパーティのライブラリを使用する必要があります。ライブラリには、次のシグネチャを持つ関数があります。
typedef double[3] Real3;
external void createMesh(const Real3* vertices, const size_t verticesCount);
パラメータとしてverticesList
渡すことができるものに変換する最良の方法は何ですか?createMesh()
vertices
現時点では、次のアプローチを使用しています。
static const size_t MAX_VERTICES = 1024;
if (verticesList.size() > MAX_VERTICES)
throw std::exception("Number of vertices is too big");
Real3 rawVertices[MAX_VERTICES];
for (size_t vertexInd = 0; vertexInd < verticesList.size(); ++vertexInd)
{
const Vector3& vertex = verticesList[vertexInd];
rawVertices[vertexInd][0] = vertex.x;
rawVertices[vertexInd][1] = vertex.y;
rawVertices[vertexInd][2] = vertex.z;
}
createMesh(rawVertices, verticesList.size());
しかし、確かにそれは問題を解決する最善の方法ではありません。