0
通常爲GLUT應用將在下面的圖案被構造:內部glutMainLoop(OpenGL的/ GLUT變化回調)
- 一些初始化東西
glutMainLoop()
我只能訪問的圖主Loop中的回調函數。 我將無法更改初始化部分。 有沒有什麼辦法可以在這個循環內改變回調函數glutKeyboardFunc()
?還是有另一種方法來捕獲鍵盤輸入而無需訪問初始化部分?
感謝
通常爲GLUT應用將在下面的圖案被構造:內部glutMainLoop(OpenGL的/ GLUT變化回調)
glutMainLoop()
我只能訪問的圖主Loop中的回調函數。 我將無法更改初始化部分。 有沒有什麼辦法可以在這個循環內改變回調函數glutKeyboardFunc()
?還是有另一種方法來捕獲鍵盤輸入而無需訪問初始化部分?
感謝
是的,你可以打電話隨時glut…Func
。例如,你可以有鍵盤處理功能和(背景鍵)
void keyfunc_edit(unsigned char key, int x, int y);
void keyfunc_select(unsigned char key, int x, int y);
void keyfunc_edit(unsigned char key, int x, int y)
{
switch(key){
case 'x':
case 'X':
/* switch to select mode */
glutKeyboardFunc(keyfunc_select);
break;
}
void keyfunc_select(unsigned char key, int x, int y)
{
switch(key){
case 'e':
case 'E':
/* switch to edit mode */
glutKeyboardFunc(keyfunc_edit);
break;
}
這適用於任何 GLUT回調,這樣你就可以切換回調顯示,空閒等,在任何時候它們之間進行切換。例如,假設你想顯示一個加載屏幕,那麼將顯示回調切換到加載屏幕顯示功能是非常合理的,並且一旦加載完成就轉換爲場景渲染功能。