// ----------------------------------------------------------- auto combineCallbackLambda = [](GLdouble coords[3], void* vertex_data[4], GLfloat weight[4], void** dataOut) mutable -> void CALLBACK { GLdouble * *vertex_data1 = (GLdouble * *)vertex_data; GLdouble* vertex = new GLdouble[7]; vertex[0] = coords[0]; vertex[1] = coords[1]; vertex[2] = coords[2]; for (int i = 3; i < 7; i++) vertex[i] = weight[0] * vertex_data1[0][i] + weight[1] * vertex_data1[1][i] + weight[2] * vertex_data1[2][i] + weight[3] * vertex_data1[3][i]; *dataOut = vertex; }; void (*combineCallbackFunction)(GLdouble coords[3], void* vertex_data[4], GLfloat weight[4], void** dataOut) = combineCallbackLambda; // ----------------------------但[]中含有捕获时不能转换------------------------------- auto vertexCallbackLambda = [&genPositionList, &genTriangle, &genPointIndex](void* vertex_data) mutable -> void CALLBACK { fprintf(stdout, "Tessellation vertexCallback"); GLdouble* pt = (GLdouble*)vertex_data; genTriangle[genPointIndex++] = pt; if (genPointIndex >= 3) { genPositionList.push_back(genTriangle[0]); genPositionList.push_back(genTriangle[1]); genPositionList.push_back(genTriangle[2]); genPointIndex = 0; } }; //void (*vertexCallbackFunction)(void*) = vertexCallbackLambda;