
OpenGL显示问题
程序的目的是实现将离散点绘制成网格并显示。具体代码如下:voidDraw(GRIDPOINT**GridPoint,intDemRow,intDemCol){//DEM格...
程序的目的是实现将离散点绘制成网格并显示。具体代码如下:
void Draw(GRIDPOINT **GridPoint,int DemRow,int DemCol)
{
//DEM格网显示
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUAD_STRIP);
for (i=0;i<DemRow;i++)
{
for (j=0;j<DemCol;j++)
{
glVertex3f(GridPoint[i][j].X,GridPoint[i][j].Y,GridPoint[i][j].Z);
}
}
glEnd();
glFlush();
}
void Display(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&Draw);
glutMainLoop();
}
GridPoint结构体数组中存储了所有点的XYZ坐标,**GridPoint,DemRow,DemCol均已获得,但编译时出现warning C4113: 'void (__cdecl *)(struct GRIDPOINT ** ,int ,int )' differs in parameter lists from 'void (__cdecl *)(void )'
运行时程序崩溃,不知是为什么?能否解决? 展开
void Draw(GRIDPOINT **GridPoint,int DemRow,int DemCol)
{
//DEM格网显示
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUAD_STRIP);
for (i=0;i<DemRow;i++)
{
for (j=0;j<DemCol;j++)
{
glVertex3f(GridPoint[i][j].X,GridPoint[i][j].Y,GridPoint[i][j].Z);
}
}
glEnd();
glFlush();
}
void Display(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&Draw);
glutMainLoop();
}
GridPoint结构体数组中存储了所有点的XYZ坐标,**GridPoint,DemRow,DemCol均已获得,但编译时出现warning C4113: 'void (__cdecl *)(struct GRIDPOINT ** ,int ,int )' differs in parameter lists from 'void (__cdecl *)(void )'
运行时程序崩溃,不知是为什么?能否解决? 展开
1个回答
展开全部
Draw函数不能接受任何参数。你可以在Draw函数里面调用别的绘制函数,接受你自己的那些参数。
打个比方:你把你写一个void Display()函数,在你的Display函数里调用你现在的draw就正确了。
glutDisplayFunc(&Draw);传入&Display。
glutDisplayFunc这个函数接受的绘制函数是不带参数的函数指针。
打个比方:你把你写一个void Display()函数,在你的Display函数里调用你现在的draw就正确了。
glutDisplayFunc(&Draw);传入&Display。
glutDisplayFunc这个函数接受的绘制函数是不带参数的函数指针。
追问
不是很懂额。。。可否把详细代码写出来以供参考,谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询