各位大虾:
你们好
我最近在用vc++6.0和opengl编一个软件,主要是根据原始数据实时显示图像,软件已经编好。昨天我们买了一台工控机,我把我编好的程序移植进去,可以编译,一可以运行。但结果不对。我现在用180个文件,我要把这180个文件通过插值显示成一个圆,为了达到实时显示的效果,我每两度一显示。在我的机器上很好用,但放到工控机上后,他就画两度刷一次屏,再画两度。下面是源代码:
HWND hWnd=GetSafeHwnd();

HDC hDC=::GetDC(hWnd);
wglMakeCurrent(hDC,m_hRC
glPushMatrix();
glPointSize(3.0);
glBegin(GL_POINTS);
for( z1=200.0f;z1>1.0f;z1-=1.0f)
{
      for(n=0;n<s;n++)
     {
c=his_pmppi_angle*(i-1)+his_pmppi_angle*n/s;
z2=z1*sin(60*3.1415926/180);
x=(int)(z1*cos(60.0*3.1415926/180))*sin(c*3.1415926/180.0);
y=(int)(z1*cos(60.0*3.1415926/180))*cos(c*3.1415926/180.0);
w=line((float)his_pmppi_angle*(i-1),(float)data[(int)z1-1][i-1],(float)his_pmppi_angle*i,(float)data[(int)z1-1][i],c);

g[(int)(200-y)][(int)(200+x)]=log10(w);//取对数
k=(int)(((g[(int)(200-y)][(int)(200+x)])/(3.0000/300))-200);

color[0]=rgb[k][0];
color[1]=rgb[k][1];
color[2]=rgb[k][2];


glColor3dv(color);
glVertex3f(x/180,y/150,0.0);

}
}
glEnd();
glPopMatrix();
wglMakeCurrent(NULL,NULL);
SwapBuffers(hDC);
glFlush();
每次运行到SwapBuffers(hDC);时,都用先前的图刷一下屏,导致有一部分图显示不出来.
请大家看看,我的代码错在哪儿?
关键是在我的机器上好用,放到另外一台机器上就不好用啦.这是为什么?