看板 GameDesign 關於我們 聯絡資訊
不知道原po找到答案沒,容我在這裡野人獻曝一番。 這個問題其實很簡單,可以參閱OpenGL官方文件 "避開OpenGL常見的16個陷阱"第九項: http://tinyurl.com/7w8er46 (其實看圖說故事就可以了,Fig. 3&4) 簡單的說只要glRasterPos*()指定的位置位於view volume之外, 就會變成無效的位置而沒辦法畫出東西。 因為就po的code看起來是在處理2D的畫面, 所以要解決問題也很簡單: 只要運用gluOrtho2D把view volume加大就行了, 再配合glViewport把加大的部分挪到視窗外面,不要影響到視線。 以下範例可以在視窗"外"加上一圈寬50、高50px的view volume: // (前略) // ... 清除color buffer,開始繪圖 // WINDOW_*變數是你的視窗寬高,請不要照抄 // glViewport(-50, -50, WINDOW_W, WINDOW_H); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-50, WINDOW_W+50, -50, WINDOW_H+50); // 繪製文字 ... (後略) 這樣就可以貼超出視窗範圍了而不會爆了。 關於gluOrtho2D與glViewport的詳細使用說明網路上資料很多, 在此不另贅述。 謝謝收看~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.241.251
xtxml:哦哦,大推,原來可以這樣用...... 感謝Alimen :) 03/02 03:35