推 xtxml:哦哦,大推,原來可以這樣用...... 感謝Alimen :) 03/02 03:35
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
不知道原po找到答案沒,容我在這裡野人獻曝一番。
這個問題其實很簡單,可以參閱OpenGL官方文件
"避開OpenGL常見的16個陷阱"第九項: