zoukankan      html  css  js  c++  java
  • C++中Lambda表达式转化为函数指针


    // -----------------------------------------------------------
    
    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;
  • 相关阅读:
    hdu1069
    hdu1068
    假脱机
    什么是数据的备份与恢复
    DNS(Domain Name System) 域名系统
    Deepnet
    deepweb
    异地备份
    冷备份和热备份
    备份
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/10886994.html
Copyright © 2011-2022 走看看