各位大虾:
你们好
我最近在用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);时,都用先前的图刷一下屏,导致有一部分图显示不出来.
请大家看看,我的代码错在哪儿?
关键是在我的机器上好用,放到另外一台机器上就不好用啦.这是为什么?
你们好
我最近在用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);时,都用先前的图刷一下屏,导致有一部分图显示不出来.
请大家看看,我的代码错在哪儿?
关键是在我的机器上好用,放到另外一台机器上就不好用啦.这是为什么?
解决方案 »
- 调试mfc单文档,新建对话框,用模态打开并关闭几次后,退出程序就没有响应(要等几分钟才能退出)
- vc 建立的 dialog 对话框 如何嵌入桌面中?
- 内存泄露??
- 谁能给我讲一下Active, UIAcitive, DeActive这些函数是干什么的
- 欲使用sendmessage函数,发送“ON_UPDATE_COMMAND_UI”更新工具条按钮消息,但忘了对应的消息名是什么?也就是sendmessage的第二个参数
- VC++编译出错
- 谁能够详细解释一下,dubug版本和release版本有什么区别,除了红
- ActiveX被覆盖,求大神来解答
- 在LISTCTRL里面自定义ScrollBar的问题
- CFile怎么清空文件已写入内容的同时,不影响缓冲区中的数据
- 改变显示模式,会引发什么消息?
- h.264中提取运动矢量的问题(int16_t和int有何差别)
去掉试试
另外:
SwapBuffers(hDC);
glFlush();
用一个就可以了,如果你设置了双缓冲,用前者
否则,用后者……
glFlush();
要反过来
这与你用没用双缓冲没关系的.