永发信息网

glut opengl 怎样获得当前窗口的大小

答案:2  悬赏:50  手机版
解决时间 2021-11-10 17:09
glut opengl 怎样获得当前窗口的大小
最佳答案
请参考这个教程:http://blog.csdn.net/nauty_li/article/details/2227143。
Hoxily说:我是Hoxily。
------------------------------------------------
GLUT定义了当窗口大小改变时哪一个函数应该被调用。此外,这个函数还会在窗口初次被创建时调用,保证初始化窗口不是正方形的时候渲染也不会变形出错。

这个函数是glutReshapeFunc()。

void glutReshapeFunc(void(*func)(int width,int height));

参数:

func: 指负责设置正确投影的函数的名称。
----------------------------------
因此我们必须做的第一件事是回到main()函数。在上一章的代码里加入对glutReshapeFunc()的调用,让我们把负责窗口尺寸的函数叫做changeSize。现在的代码如下。

void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("3D Tech- GLUT Tutorial");
glutDisplayFunc(renderScene);

// Here is our new entry in the main function
glutReshapeFunc(changeSize);

glutMainLoop();
}
下面我们需要做的就是定义函数changeSize()。从glutReshapeFunc()函数的声明可以看到,changSize()函数有两个形参。。这两个参数代表新的窗口高度和宽度。

void changeSize(int w, int h) {

// 防止除数即高度为0
// (你可以设置窗口宽度为0).
if(h == 0)
h = 1;

float ratio = 1.0* w / h;

// 单位化投影矩阵。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

// 设置视口大小为增个窗口大小
glViewport(0, 0, w, h);

// 设置正确的投影矩阵
gluPerspective(45,ratio,1,1000);
//下面是设置模型视图矩阵
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0,0.0,5.0, 0.0,0.0,-1.0,0.0f,1.0f,0.0f);
}
----------------------------------------
Hoxily说:总之,传给glutReshapeFunc()的这个回调函数由你自己书写,函数原型如:FunctionName(int width, int height)。从这里可以看出改变窗口大小后的宽和高就是width和height。
Hoxily说:就是这样。我也没试过,你试试。参考资料:http://blog.csdn.net/nauty_li/article/details/2227143
全部回答
在changesize函数里面获取

int currentWindowSizeW;
int currentWindowSizeH;

void ChangeSize(int w, int h)
{
currentWindowSizeW = w;
currentWindowSizeH = h;
}

int main(int argc, char** agcv)
{
//...
glutReshapeFunc(ChangeSize);
//...
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
面试一翻译工作3500月薪,保证翻译量9万字每
儿童气质类型分为活动水平,节律性九个维度的
化工工业厂房用什么样的彩涂板
萘能算有两个苯环吗?
包头市第五十一中学-名师易懂地址有知道的么
独生子女证已经办理,一直没领费用,可以补吗
天津武清区曹子里乡有拉花手工活的吗,我需要
4=k(24-l) 2=k(22.6-l)怎么解
群发短信时,几十个号码能粘贴过去吗
32年结婚纪念,多少个日日夜夜... ...
金美孚和银美孚的区别只是价格区别吗?
冬天民宿生意惨淡 什么原因
如何使用nexcare steri-strip skin closure 3
衡阳SEO怎么做网站链接
直径50o的柱子箍筋是多大
推荐资讯
到底有几个DLC
鸽子环号查询、2012-22--1460112
养牛对周边环璄有影响吗
为什么手机刷机成功后开不了机
江苏小牛电动车科技公司2016年7日23日常州人
HR们,过年前还安排招聘面试吗,是不是要
亚和数码科技有限公司地址好找么,我有些事要
鄂尔多斯一级沿黄公路共有哪些收费站
儒家有《论语》,道家有《德经》,兵家有《兵
王母娘娘设蟠桃宴 (猜一成语)
75×125简便方法
监理防水报审,报验表,审查验收意见怎样签
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?