日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL初学时遇到的一些常见的函数之解析

發布時間:2025/6/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL初学时遇到的一些常见的函数之解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.問:openGL中glutReshapeFunc與glutDisplayFunc的區別
如題 窗口創建初和 每次改變大小這兩個都會執行 他們有什么區別?可以不用glutDisplayFunc嗎?

答:glutReshapeFunc是窗口改變的時候調用的函數,在這個里面可以根據縮放后的窗口重新設置
camera的內部參數,比如橫縱比啥的,而glutDisplayFunc是顯示的時候調用,可見改變窗口后
調用glutReshapeFunc后還是會調用glutDisplayFunc進行顯示的。
不可以不用glutDisplayFunc,比如你想實現動畫效果,也就是說窗口大小不變而里面的內容發生變化,這時候通過設置glutIdelFunc,在里面最后調用glutpostdisplay(我記不清楚了,應該是這個函數),來通知glutdisplayFuc重畫,這樣就能實現動畫。
簡單的說,glutReshapeFunc與glutIdelFunc這些函數都不去直接處理顯示,而是設置好相應的參數,讓glutdisplayfunc來執行繪制。

glutReshapeFunc確實是調整窗口大小時被調用,此函數常用在保持視圖的寬高比上。
(來源:https://zhidao.baidu.com/question/486852819.html)

2.glutIdleFunc函數
原型:
void glutIdleFunc(void(*func)(void));

參數:

func:在程序空閑的時候就會被調用的函數的函數名。

按照我們的想法,當程序空閑時應該調用的函數是我們先前定義的渲染函數: renderScene。由于OpenGL默認沒有開啟深度測試,我們還要開啟它,這樣我們才能知道哪個物體在前面,哪個物體在后面。深度測試的開啟在main()函數里,下面看看現在的main函數。

void main(int argc, char **argv) {
glutInit(&argc, argv);

// 在這里設置雙緩沖區。 glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(320,320); glutCreateWindow("3D Tech- GLUT Tutorial"); glutDisplayFunc(renderScene); // 這里讓程序空閑時調用renderScene, glutIdleFunc(renderScene); glutReshapeFunc(changeSize); //開啟深度測試。 glEnable(GL_DEPTH_TEST); glutMainLoop();

}
下面就是設置渲染函數renderScene。我們定義了一個浮點型變量并初始化為0.0,下面在renderScene函數加一些必須的東西。

float angle=0.0;

void renderScene(void) {

//注意我們這里清除了深度緩沖區。 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //保存當前模型視圖矩陣。 glPushMatrix(); glRotatef(angle,0.0,1.0,0.0); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); // 彈出堆棧 glPopMatrix(); // 交換緩沖區 glutSwapBuffers(); // 讓angle自動增加。 angle ;

}
分享來源:http://blog.sina.com.cn/s/blog_680374c30100l7lh.html

總結

以上是生活随笔為你收集整理的OpenGL初学时遇到的一些常见的函数之解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。