-1
在我的opengl程序中,我想讓用戶點擊某個鍵時屏幕變成紅色。在我my_keyboard
功能,我有以下幾點:Opengl形狀不畫在回調函數
void my_keyboard(unsigned char key, int x, int y) {
int feedback_code=0;
if (key == 49) {
feedback_code=1;
}
if (feedback_code==1) {
flash_screen();
}
我flash_screen方法如下:
void screen_flash() {
float mat[16];
glGetFloatv(GL_MODELVIEW_MATRIX,mat);
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_POLYGON);
glVertex2f(0.0f, 0.0f);
glVertex2f(0.0f, 640.0f);
glVertex2f(888.0f, 640.f);
glVertex2f(888.0f, 0.0f);
glEnd();
}
由glGetFloatv
電話,我知道我的變換矩陣是回到左下角哪裏它應該是,在(0,0)點。所以繪圖函數應該繪製一個紅色方塊888x640px,這是我窗口的大小。然而,當我運行程序並按下'1'鍵時,我沒有形狀!我使用了斷點並確定了GlBegin-GlEnd語句運行,但它們似乎沒有產生任何東西。
我唯一的其他形狀是在main_loop啓動之前調用的主顯示函數中完成的。
我在做什麼錯?
_「通過glGetFloatv調用,我知道我的變換矩陣回到了它應該在的左下角,在點(0,0)」_這是不正確的。通過'glGetFloatv',您可以將當前的模型視圖矩陣存儲到'mat'中,而不是其他任何東西。你確定你正在設置正確的投影和模型視圖矩陣嗎? – Dan 2014-09-20 00:57:10
如果我的'mat'顯示單位矩陣,這是我想要的這種情況下,這不意味着我當前的轉換矩陣在(0,0)? 根據我在我的主要顯示功能中所做的繪圖,我的投影和模型視圖矩陣是正確的。除非你進入主循環時發生了什麼事情,我不認爲是這樣。 – sven 2014-09-20 01:03:51