C++中Lambda表达式转化为函数指针
2024-09-03 18:30:20
// ----------------------------------------------------------- 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;
最新文章
- [翻译]Orchard如何工作
- Java全角、半角字符的关系以及转换
- QListWidget
- Redis - set类型操作
- C#动态多线程实例
- geektool--一款很geek的工具
- underscorejs-reduce学习
- IOS touch event animation 转动的风车
- 手把手视频:万能开源Hawk抓取动态网站
- RSA,Miller-Rabin素数测试的源流及其证明
- poj 1679 Prim判断次短路
- eclipse ide for java ee developers与eclipse ide for java developers有什么区别
- 简单CSS 布局
- 驱动调试(四)oops确定调用树
- 关于几天来研究使用css3动画的一点总结
- ie8的input的placeholder不显示的解决bug
- 嵌入式V3s交叉编译 tslib和QT4.8.7,并使用Qt Creator编译项目
- 通过URL传递中文参数的乱码处理
- 51Nod 1265 四点共面(计算几何)
- VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘