关于OpenGL图形随窗口变形的问题!!求高手指点!

flycatmei 2003-03-29 11:51:00
在OnSize函数中的代码是这样的:
void CGLLightView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if (cy==0) // 防止被零除
{
cy=1;// 将Height设为1
}
glMatrixMode(GL_PROJECTION); // 选择投影矩阵
glLoadIdentity();// 重置投影矩阵
gluPerspective(0.0f,(GLfloat)cx/(GLfloat)cy,1.0,100.0);// 计算窗口的外观比

glLoadIdentity();
glViewport(0,0,cx,cy);//设视口
}

绘制一个正方形的函数中的代码是这样的:
void CGLLightView::OnDraw(CDC* pDC)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBegin(GL_QUADS);
glVertex2f(-0.5f,0.5f);
glVertex2f(-0.5f,-0.5f);
glVertex2f(0.5f,-0.5f);
glVertex2f(0.5f,0.5f);
glEnd();
SwapBuffers(m_pDC->GetSafeHdc());
// TODO: add draw code for native data here
}

问题:为什么正方形会变长方形?图形的高和宽跟窗口的高和宽成正比的:窗口拉长,正
方形也拉长!这个问题怎么解决?有人说这是和gluPerspective这个函数设定相关,但应
该怎么设定?是不是还有别的函数在影响这个问题?
请高手指教!!!
...全文
292 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
actioin 2003-06-20
  • 打赏
  • 举报
回复
alphapaopao(炮炮) :你厉害阿!!!
o_racle 2003-04-20
  • 打赏
  • 举报
回复
gluPerspective(0.0f,(GLfloat)cx/(GLfloat)cy,1.0,100.0);// 计算窗口的外观比

----------
应该是这里的错误,这是透视变换,看看它的相关参数就知道了。
另外,glOrtho 可以使正方形保持不变
bingle_li 2003-04-20
  • 打赏
  • 举报
回复
看看这段代码
// Called by GLUT library when the window has chanaged size
void ChangeSize(GLsizei w, GLsizei h)
{
// Prevent a divide by zero
if(h == 0)
h = 1;

// Set Viewport to window dimensions
glViewport(0, 0, w, h);

// Reset coordinate system
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

// Establish clipping volume (left, right, bottom, top, near, far)
if (w <= h)
glOrtho (0.0f, 250.0f, 0.0f, 250.0f*h/w, 1.0, -1.0);
else
glOrtho (0.0f, 250.0f*w/h, 0.0f, 250.0f, 1.0, -1.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
这样能保证你所画的正方形保持不变
xuzhao 2003-04-10
  • 打赏
  • 举报
回复
把gluPerspective下面的glLoadIdentity去掉
gaoyoujun 2003-04-10
  • 打赏
  • 举报
回复

我想先用3d-max制作一个飞机着陆的动画,然后用opengl来
处理。使之能用外界输入的数据来控制,我现在刚开始学习vc,请指点
如何才能掌握着技巧,你的设计,处理思路是什么?我现在没有头绪。
它能处理3d的文件格式嘛/
alphapaopao 2003-03-30
  • 打赏
  • 举报
回复
1. Preface
前几天,有一个网友寻找OpenGL显示曲面的方法,email到我这里。我把我的 wave 程序发给他了。不料我的程序使他喜出望外。这是我想到如果我的程序放到网上的话,会有更多的人能够更容易的看到我的代码,并且公容易的学习如何使用OpenGL。

2. Contents
请大家访问 http://www.betajin.com/alphasun/index.htm。请看其中的 Wave OpenGL 页面,在里面便可下载 wave 的源代码。

以后我还会公布一些其它的程序源代码。希望能对大家有用。我的 MyProjects 有172个目录呢,并且有的workspace包含数个工程。

另外,如果大家觉得本贴对你有用,还烦劳各位 up 一下,使得更多的人能够看得到。
谢谢

flycatmei 2003-03-29
  • 打赏
  • 举报
回复
没人知道?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧