void OsdCudaKernelDispatcher::ApplyVertexEdits( FarMesh<OsdVertex> *mesh, int offset, int level, void * clientdata) const { OsdCudaComputeContext * context = static_cast<OsdCudaComputeContext*>(clientdata); assert(context); int numEditTables = context->GetNumEditTables(); for (int i=0; i < numEditTables; ++i) { const OsdCudaHEditTable * edit = context->GetEditTable(i); assert(edit); const OsdCudaTable * primvarIndices = edit->GetPrimvarIndices(); const OsdCudaTable * editValues = edit->GetEditValues(); if (edit->GetOperation() == FarVertexEdit::Add) { OsdCudaEditVertexAdd( context->GetCurrentVertexBuffer(), context->GetCurrentVertexNumElements()-3, edit->GetPrimvarOffset(), edit->GetPrimvarWidth(), primvarIndices->GetNumElements(level-1), static_cast<int*>(primvarIndices->GetCudaMemory()) + primvarIndices->GetMarker(level-1), static_cast<float*>(editValues->GetCudaMemory()) + editValues->GetMarker(level-1)); } else if (edit->GetOperation() == FarVertexEdit::Set) { // XXXX TODO } } }