用opengl绘图,画出的图形在窗口最大化后不见了,为什么? 5
问题:用opengl绘图:直接给出三个数组绘制格网图生成的图形背景是白色的(本身就设为白色),用函数生成数据后生成的图形背景是黑色的,而且最大化或被其它窗口覆盖后被覆盖的...
问题:用opengl绘图:直接给出三个数组绘制格网图生成的图形背景是白色的(本身就设为白色),用函数生成数据后生成的图形背景是黑色的,而且最大化或被其它窗口覆盖后被覆盖的部分就会变成白色,图形也不见了
请教一下大家,我这个程序如果直接给出高程值就不会出现这种情况,通过函数生成高程值就会出现这样的状况,为何呢
precreatewindow函数中不作任何改变,即用默认的窗口大小
各种变换代码如下
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glClearColor(1.0f,1.0f,1.0f,1.0f);
glColor3f(0.0f,1.0f,0.0f);
glLineWidth(2.0f);
glViewport(0,0,900,900);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//gluPerspective(120.0, 1.0f, 2.0f, 10.0);
gluPerspective(60.0, 1.0f, 2.0f, 128.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//循环绘制X方向网格线
for(i=0;i<DY;i++)
{
//设置线绘制状态
glBegin (GL_LINE_STRIP);
for(j=0;j<DX;j++)
{
glVertex3f(xx[i*DY+j],yy[i*DY+j],zz[i*DY+j]);
//glVertex3f(xx[i*DY+j+1],zz[i*DY+j+1],yy[i*DY+j+1]);
}
glEnd();
}
//循环绘制Y方向网格线
for(j=0;j<DX;j++)
{
//设置线绘制状态
glBegin (GL_LINE_STRIP);
for(i=0;i<DY;i++)
{
glVertex3f(xx[i*DX+j],yy[i*DX+j],zz[i*DX+j]);
//glVertex3f(xx[i*DX+1+j],zz[i*DX+1+j],yy[i*DX+1+j]);
}
glEnd();
}
glPopMatrix();
glFlush();
glPushMatrix();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(30,1.0f,0.0f,0.0f);
glRotatef(30,0.0f,1.0f,0.0f); 展开
请教一下大家,我这个程序如果直接给出高程值就不会出现这种情况,通过函数生成高程值就会出现这样的状况,为何呢
precreatewindow函数中不作任何改变,即用默认的窗口大小
各种变换代码如下
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glClearColor(1.0f,1.0f,1.0f,1.0f);
glColor3f(0.0f,1.0f,0.0f);
glLineWidth(2.0f);
glViewport(0,0,900,900);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//gluPerspective(120.0, 1.0f, 2.0f, 10.0);
gluPerspective(60.0, 1.0f, 2.0f, 128.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//循环绘制X方向网格线
for(i=0;i<DY;i++)
{
//设置线绘制状态
glBegin (GL_LINE_STRIP);
for(j=0;j<DX;j++)
{
glVertex3f(xx[i*DY+j],yy[i*DY+j],zz[i*DY+j]);
//glVertex3f(xx[i*DY+j+1],zz[i*DY+j+1],yy[i*DY+j+1]);
}
glEnd();
}
//循环绘制Y方向网格线
for(j=0;j<DX;j++)
{
//设置线绘制状态
glBegin (GL_LINE_STRIP);
for(i=0;i<DY;i++)
{
glVertex3f(xx[i*DX+j],yy[i*DX+j],zz[i*DX+j]);
//glVertex3f(xx[i*DX+1+j],zz[i*DX+1+j],yy[i*DX+1+j]);
}
glEnd();
}
glPopMatrix();
glFlush();
glPushMatrix();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(30,1.0f,0.0f,0.0f);
glRotatef(30,0.0f,1.0f,0.0f); 展开
2个回答
展开全部
用默认的窗口大小
追问
可是我在Precreatewindow函数中加入cs.cx = 1000;cs.cy = 1000;还是一样啊
追答
定点数据超过gluPerspective设定的范围了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的定点数据是不是超过gluPerspective设定的范围了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询