opengl中reshape函数怎么用?

 我来答
惠企百科
2022-12-01 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部
你说的应该是改变窗口形状,所绘制的物体不变形,而只是大小发生变化是吧?\x0d\x0avoid reshape (int w, int h)\x0d\x0a{\x0d\x0a glViewport (0, 0, (GLsizei) w, (GLsizei) h);\x0d\x0a glMatrixMode (GL_PROJECTION);\x0d\x0a glLoadIdentity ();\x0d\x0a if (w <= h)\x0d\x0a gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);\x0d\x0a else\x0d\x0a gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);\x0d\x0a glMatrixMode(GL_MODELVIEW);\x0d\x0a}\x0d\x0a看这个reshape函数当窗口发生变化,窗口的w(宽度)和h(高度)参数传给reshape函数,\x0d\x0a glViewport (0, 0, (GLsizei) w, (GLsizei) h);\x0d\x0a把视口设置为铺满整个窗口, if (w <= h)\x0d\x0a gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);\x0d\x0a else\x0d\x0a gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);\x0d\x0a把投影得到的视景体按照视口变化的比例变化视景体的比例;简单地说,本来视景体宽高比是1:1,视口宽高比也是1:1,这时绘制了一个物体。然后因为窗口发生变化,视口也变化,假如变成了2:1;这时如果用1:1的视景体放到2:1的视口上肯定会变形,所以要把视景体变成2:1,这样,虽然物体看起来变大(或变小)了,但长宽比例不变,也就看起来不变形了。注意这个参数(GLfloat) w/(GLfloat) h。
三秒区小王子
推荐于2019-08-06 · TA获得超过281个赞
知道小有建树答主
回答量:135
采纳率:100%
帮助的人:101万
展开全部
你说的应该是改变窗口形状,所绘制的物体不变形,而只是大小发生变化是吧?
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
if (w <= h)
gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
else
gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
glMatrixMode(GL_MODELVIEW);
}
看这个reshape函数当窗口发生变化,窗口的w(宽度)和h(高度)参数传给reshape函数,
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
把视口设置为铺满整个窗口, if (w <= h)
gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
else
gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
把投影得到的视景体按照视口变化的比例变化视景体的比例;简单地说,本来视景体宽高比是1:1,视口宽高比也是1:1,这时绘制了一个物体。然后因为窗口发生变化,视口也变化,假如变成了2:1;这时如果用1:1的视景体放到2:1的视口上肯定会变形,所以要把视景体变成2:1,这样,虽然物体看起来变大(或变小)了,但长宽比例不变,也就看起来不变形了。注意这个参数(GLfloat) w/(GLfloat) h。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式