首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

OpenGL菜鸟的有关问题: 为什么没有显示图形

2012-01-14 
OpenGL初学者的问题: 为什么没有显示图形为什么没有显示图形BOOLCDrawView::Draw(CWnd*pWnd,CDerivCoorLis

OpenGL初学者的问题: 为什么没有显示图形
为什么没有显示图形
BOOL   CDrawView::Draw(CWnd*   pWnd,     CDerivCoorList&   PointList,
  GLfloat   Deltax,   GLfloat   Deltay,  
  GLfloat   DeltaAnglex,   GLfloat   DeltaAngley)
{
GLfloat   left=GLfloat(0);   GLfloat   right=GLfloat(0);  
GLfloat   bottom=GLfloat(0);   GLfloat   top=GLfloat(0);  
GetViewRange(PointList,left,right,bottom,top);   //获取视景体范围

//画坐标系,   首先建模
::glBegin(GL_LINES);
::glVertex2f(left,   0);
::glVertex2f(right,0);
::glEnd();

::glBegin(GL_LINES);
::glVertex2f(0,top);
::glVertex2f(0,bottom);
::glEnd();

//画多段线
::glBegin(GL_LINE_STRIP);
POSITION   pos=PointList.GetHeadPosition();
while   (pos!=NULL)
{
CCoor*   point=PointList.GetNext(pos);
::glVertex2f(point-> x,   point-> y);
}
::glEnd();



///////////模型变换///////////////
//将局部坐标平移至((left+right)/2,(top+bottom)/2,-5)
::glLoadIdentity();   //将现有矩阵置为单位矩阵
::glMatrixMode(GL_MODELVIEW);   //设置模型变换
::glTranslatef((left+right)/2,(top+bottom)/2,-5);   //视点变换是在视点坐标系中进行,实际上相当将相机远离屏幕5,
//5没有实际意义,因为是一个平面图形
/*//以下进行平移,旋转操作
::glMatrixMode(GL_MODELVIEW);   //设置模型变换
::glTranslatef(0,0,   0);   //平移
::glScalef(1.0,   1.0,1.0);*/
/////////投影变换
::glMatrixMode(GL_PROJECTION);   //设置投影变换
::glLoadIdentity();   //将现有矩阵置为单位矩阵

::gluOrtho2D(-(right-left),(right-left),-(top-bottom),(top-bottom));   //设置视景体范围
glMatrixMode(GL_MODELVIEW);//恢复模型变换

/////////视口变换/////////
CRect   ClientRect;
pWnd-> GetClientRect(&ClientRect);//获取客户区大小
::glViewport((GLint)ClientRect.left/2,   (GLint)ClientRect.bottom/2,  
(GLsizei)ClientRect.Width(),   (GLsizei)ClientRect.Height());   //设置设置图形显示区域

//SwapBuffers(m_hDC);
//交换前后缓存数据,即将后缓存数据送给前缓存。(在OpenGL中支持双缓存)

return   TRUE;

}


[解决办法]
GLfloat left=GLfloat(0); GLfloat right=GLfloat(0);
GLfloat bottom=GLfloat(0); GLfloat top=GLfloat(0);

left,right,top,bottom
都是零啊,怎么画啊?
while (pos!=NULL)
{
CCoor* point=PointList.GetNext(pos);
::glVertex2f(point-> x, point-> y);
}
你保证point-> x,point-> y都有正确的值吗?
[解决办法]
你一次就画一个,试试啊。
看在那里出了问题
[解决办法]
你站在一个比飞机大20倍的物体旁边&&你站在月球看地球上的人!=(物体||人 )不存在

热点排行