Vertex Geometry Modifier
Overview概要
TheVertexGeometryModifier はVertexGeometryModifier、,VertexAccessorと連携して、クラス in conjunction with a インターフェイスによって提供されるセッターを使用してVertexAccessorVertexGeometry, helps to modify VertexGeometry objects by the means of the setters offered by the class interface. The interface offers also getters which are helpful to retrieve the values of the vertex elements from a given vertex buffer.オブジェクトを変更するのに役立ちます。インターフェイスは、特定の頂点バッファーから頂点要素の値を取得するのに役立つゲッターも提供します。
Example例
The example below shows how to change the position values for the vertices from a vertex buffer of a given mesh.以下の例は、特定のメッシュの頂点バッファーから頂点の位置の値を変更する方法を示しています。
VertexGeometry* vertexGeom;
bool isMutable = m_mesh3->GetVertexBuffer()->GetVertexGeometry()->GetVertexArrayResourceHandle().m_isMutable;
// Get the vertex geometry of the mesh
if (isMutable) {
vertexGeom = m_mesh3->GetVertexBuffer()->GetVertexGeometry();
}
else {
DiagnosticPlatform::ConsoleOut("VertexGeometryData not mutable");
break;
}
// The vertex accessor will be used by the vertex geometry modifier to access the vertices
VertexAccessor accessor(*vertexGeom);
// Create a vertex geometry modifier specifying as usage the type of vertex attribute
// which will be changed
VertexGeometryModifier modifier(*vertexGeom, VertexGeometry::Position, 0);
Float vertexData[3];
for(Int i = 0; i<8; i++) {
if(s_inflate) {
// Retrieve the position data of the vertex "i" in the vertexData array
modifier.GetVertexElement(accessor.GetVertex(i), vertexData, 3);
// Alter the data and set it back
modifier.SetVertexElement(accessor.GetMutableVertex(i), vertexData[0]*1.3F, vertexData[1]*1.3F, vertexData[2]*1.3F);
}
else {
// Set the position of the vertex with data get from an array (Float c_positionData[8][3])
modifier.SetVertexElement(accessor.GetMutableVertex(i), c_positionData[i], 3);
}
}
// Update the vertex buffer on the mesh
m_mesh3->GetVertexBuffer()->Update(0, m_mesh3->GetVertexBuffer()->GetVertexGeometry()->GetVertexCount());