首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

求高手解释openGL显示有关问题

2012-03-24 
求高手解释openGL显示问题,在线等我用openGL画了一个圆柱glTranslatef(x_fscrmove,y_fscrmove,z_fscrmove)

求高手解释openGL显示问题,在线等
我用openGL画了一个圆柱
                        glTranslatef(x_fscrmove,y_fscrmove,z_fscrmove);
                        glRotatef(-90,1.0,0.0,0.0);
      GLUquadricObj*   quadObj;
      quadObj=gluNewQuadric();
      glColor4f(0.4f,0.0f,0.0f,0.0f);      
      gluCylinder(quadObj,0.15,0.15,50.0,50,3);
投影用的是平面投影
glOrtho   (-70,   70,   -60*(GLfloat)h/(GLfloat)w,60*(GLfloat)h/(GLfloat)w,   -100.0,   200.0);
然后加入键盘响应移动该圆柱
void   CSimulationView::OnChar(UINT   nChar,   UINT   nRepCnt,   UINT   nFlags)  
{
//   TODO:   Add   your   message   handler   code   here   and/or   call   default
if   (nChar   ==   's ')
      y_fscrmove   +=   1.0;
if   (nChar   ==   'w ')
      y_fscrmove   -=   1.0;
if   (nChar   ==   'd ')
      x_fscrmove   -=   1.0;
if   (nChar   ==   'a ')
      x_fscrmove   +=   1.0;
//Invalidate(FALSE);
CView::OnChar(nChar,   nRepCnt,   nFlags);
}
问:为什么在移动该圆柱的时候圆柱一会粗一会细呢?是不是因为圆柱半径半径太小,转化为屏幕象素时取整的原因啊?请高手解释,并如何解决这个问题。谢谢。

[解决办法]
开始还以为是透视的效果,可你用的是平行透视。

如果是取整问题可以把圆柱的 近似度的参数提高些。。。而且最多只影响一个象素,应该效果还好,可以接受的。

另外在OnChar()里放着, 不知道你是否 出现了 按键压下去时 先出现效果,然后暂停住,然后又加速移动。大概是控制面板里的 连续按键 时间设置 的效果影响了程序。。 要是用api的getkeystate()就能完全同步于键盘。我不知道这个会影响不, 如果你没出现我说的现象。就当我没提。。

因为没程序运行。 所以我也看不到结果。试着改变代码的方式看看。。openGL很多地方没办法清楚,不如多试其他办法,避开问题,我的经验是这样的,解决一个问题的时间太长了,相关资料太少了。调试疯了。。
帮你UP

热点排行