還是零分 散播福音的祭司
註冊時間: 2007-09-19 文章: 164
653.83 果凍幣
|
發表於: 2008-6-27, PM 6:34 星期五 文章主題: OpenGL入門教學(02) |
|
|
//================================================================================
//main主程式
//================================================================================
承接上一篇末尾的GLUT程式
那個Code分三個部分
main主程式和三個副程式WindowSize、Keyboard、Display
這篇只說明main主程式的內容
其他三個副程式的說明放到下一篇吧
--------------------------------------------------------------------------------
//------glutInit(&argc, argv);
//
//這函式是GLUT的,只是接收main(int argc, char** argv)的參數位址
//寫不寫都沒有關係,main也可以不要有參數,現在大概沒人給主程式這種參數的
//有用到的人才需要這行指令,沒用到的就算了吧,下次我給的code就不會有這行函式了
//
//如果好奇argc和argv在C/C++是幹麼用的,就看這個說明好了
//http://www.opencv.org.cn/index.php?title=Main%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0argc%EF%BC%8Cargv%E8%AF%B4%E6%98%8E&variant=zh-tw
--------------------------------------------------------------------------------
//------glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
//
//GLUT建立window視窗時所使用的顯示模式
//GLUT_DOUBLE選擇雙重緩衝區視窗
//GLUT_RGB選擇紅綠藍色彩模式
--------------------------------------------------------------------------------
//------glutInitWindowSize(視窗寬度,視窗高度);
//
//只是一開始的尺寸,建立之後還是像正常的視窗一樣能伸縮
--------------------------------------------------------------------------------
//------glutInitWindowPosition(橫座標,縱座標);
//
//選擇你的視窗建立時要出現在螢幕的哪個位置
//填(0,0)的話視窗會出現在螢幕的左上角(不是左下角)
//要是填負數的話GLUT就當你填了(0,0)
--------------------------------------------------------------------------------
//------glutCreateWindow("視窗標題");
//
//但是視窗上的小圖示不能自己決定
--------------------------------------------------------------------------------
//------glutReshapeFunc(填上自定函式的名稱);
//
//能指定一個自定函式當Callback函式
//一般的函式是你在程式碼中有呼叫才執行的,參數是你給的,可能在程式碼中給的或鍵盤輸入
//
//Callback函式則是作業系統來呼叫的,參數是系統給的
//
//
//而glutReshapeFunc這個函式要的是一個自定函式的指標
//
//以我寫的code當例子glutReshapeFunc(WindowSize);
//
//WindowSize是我自己寫的函式,名字也是自己取,glutReshapeFunc並沒有限制你填入的函式名稱
//但是對函式的原形有限制,這是WindowSize的原形
//
//void WindowSize(int , int );
//
//void是固定的,參數也固定兩個,兩個參數的資料型態也固定是int,參數名稱倒是可以自己取
//
//
//那麼.....glutReshapeFunc所指定的WindowSize到底做了什麼?
//
//當你改變視窗大小時,視窗的長寬改變了,作業系統也察覺到了
//於是作業系統呼叫了WindowSize,給了WindowSize新的視窗長寬參數,並執行WindowSize的內容
//
//所以WindowSize的那兩個參數不是你給程式的,是作業系統要給你的(程式)
//至於WindowSize的內容下一篇再講
--------------------------------------------------------------------------------
//------glutKeyboardFunc(放入用來處理鍵盤輸入的自定函式名稱);
//
//當有按鍵按下時,作業系統會呼叫它指定的自定函式
//被指定的自定函式也成了一個Callback函式
//還是拿我自定的函式名稱當例子好了
//
//glutKeyboardFunc(Keyboard);
//
//
//void Keyboard(unsigned char , int, int );
//
//第一個參數得到你輸入的鍵碼
//後兩個參數是你按按鍵時,滑鼠的座標(是視窗座標不是螢幕座標)
--------------------------------------------------------------------------------
//------glutDisplayFunc(自定函式名稱);
//
//一樣的用法
//OpenGL的繪圖動作都寫在它所指定的自定函式
//不同於上面兩個指定Callback函式,作業系統不會給它任何參數
--------------------------------------------------------------------------------
//------glutMainLoop();
//
//從這裡開始進入無限迴圈
//迴圈的內容我不清楚
//只知道Callback函式有動作
//迴圈才會有變化
--------------------------------------------------------------------------------
哎哎
原來要講的清楚詳細會這麼累啊
難怪有些大學教授喜歡上課喇賽
還是零分 在 2008-7-4, AM 12:40 星期五 作了第 4 次修改 |
|