gluTessCallback出错【转】

来源:互联网 发布:档案管理系统软件免费 编辑:程序博客网 时间:2024/06/07 10:40

原来例子中的代码是这样的:

void CALLBACK vertexCallback(GLvoid *vertex)
{
   const GLdouble *pointer;

   pointer = (GLdouble *) vertex;
   glColor3dv(pointer+3);
   glVertex3dv(vertex);/*这行出错*/
}

 

但在c++ 中运行会出错,错误代码为error C2664: 'glVertex3dv' : cannot convert parameter 1 from 'void *' to 'const double *'也就是说由glVertex3dv来看括号内的变量应为double类型,而vertex却是'void *类型,修改如下就可运行通过了:]

void CALLBACK vertexCallback(GLvoid *vertex)
{
   const GLdouble *pointer;

   pointer = (GLdouble *) vertex;
   glColor3dv(pointer+3);
   glVertex3dv((GLdouble *)vertex);
}

还有下面也有一个类似的错误情况:

本来代码是这样的:

tobj = gluNewTess();
   gluTessCallback(tobj, GLU_TESS_VERTEX, glVertex3dv);

/*这行出错*/错误编码为

error C2664: 'gluTessCallback' : cannot convert parameter 3 from 'void (const double *)' to 'void (__stdcall *)(void)'其中const double *对应的为glVertex3dv,不能转化为(__stdcall *)(void)格式,那么

就强制转换了,给glVertex3dv加上((__stdcall *)(void))前缀即可:
       

gluTessCallback(tobj, GLU_TESS_VERTEX,
                   (void (__stdcall *)())glVertex3dv);

搞定了

 

摘自:http://hi.baidu.com/198572/blog/item/d2e08ccb5c6259fe52664f93.html

原创粉丝点击