資源描述:
《OpenGL圖形編程9交互(陳永強(qiáng))課件.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、OpenGL圖形編程武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院授課教師:陳永強(qiáng)教授19.交互9.1橡皮筋技術(shù)9.2拾取(選擇)9.3菜單39.1OpenGL實現(xiàn)橡皮筋技術(shù)橡皮筋技術(shù)的實現(xiàn)方法利用顏色的異或操作,對原有圖形并不是擦除,而是再繪制一條同樣的直線段并與原圖形進(jìn)行異或操作,此時原圖形會從屏幕上消失;利用雙緩存技術(shù),繪制圖形時分別繪制到兩個緩存,交替顯示。49.1OpenGL實現(xiàn)橡皮筋技術(shù)1.鼠標(biāo)實現(xiàn)鼠標(biāo)響應(yīng)注冊函數(shù)glutMouseFunc(MousePlot);鼠標(biāo)響應(yīng)函數(shù)voidMousePlot(Glintbutton,Glintaction,GlintxMouse,GlintyMouse)
2、;參數(shù)button:GLUT_LEFT_BUTTON、GLUT_MIDDLE_BUTTON或GLUT_RIGHT_BUTTON。參數(shù)action:GLUT_DOWN或GLUT_UP。坐標(biāo)(xMouse,yMouse)制定當(dāng)前鼠標(biāo)相對于窗口左上角點(diǎn)的位置坐標(biāo)。9.1OpenGL實現(xiàn)橡皮筋技術(shù)1.鼠標(biāo)實現(xiàn)鼠標(biāo)移動注冊函數(shù)glutMotionFunc(MouseMove);glutPassiveMotionFunc(PassiveMouseMove);鼠標(biāo)移動相應(yīng)函數(shù)voidMouseMove(GlintxMouse,GlintyMouse);VoidPassiveMouseMove(Glintx
3、Mouse,GlintyMouse);9.1OpenGL實現(xiàn)橡皮筋技術(shù)1.鼠標(biāo)實現(xiàn)教材【程序3-1】79.1OpenGL實現(xiàn)橡皮筋技術(shù)2.鍵盤實現(xiàn)鍵盤注冊函數(shù)glutKeyboardFunc(Key);鍵盤相應(yīng)函數(shù)voidKey(unsignedcharkey,intx,inty);9.1OpenGL實現(xiàn)橡皮筋技術(shù)2.鍵盤實現(xiàn)教材【程序3-2】99.2OpenGL實現(xiàn)拾取操作設(shè)置拾取緩沖區(qū)voidglSelectBuffer(GLsizein,GLunint*buff);進(jìn)入選擇模式GLintglRenderMode(GLenummode);109.2OpenGL實現(xiàn)拾取操作名字堆棧操作初始
4、化名字堆棧(glInitNames)將一個名字壓入堆棧(glPushName)替換名字堆棧的棧頂元素(glLoadName)將棧頂元素彈出(glPopName)119.2OpenGL實現(xiàn)拾取操作設(shè)置合適的變換過程gluPickMatrix(xPick,yPick,widthPick,heightPick,*vp);為每個圖元分配名字并繪制切換回渲染模式分析選擇緩沖區(qū)中的數(shù)據(jù)9.2OpenGL實現(xiàn)拾取操作例子教材【程序3-3】139.3OpenGL中的菜單功能菜單注冊函數(shù)glutCreateMenu(ProcessMenu);在菜單中加入菜單項voidglutAddMenuEntry(char
5、*name,GLintvalue);將菜單與某個鼠標(biāo)按鍵關(guān)聯(lián)voidglutAttachMenu(button);