[問題] OpenGL畫點圖

看板C_and_CPP作者 (葉)時間11年前 (2014/02/18 15:16), 編輯推噓1(1014)
留言15則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) visual studio 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 問題(Question): 想用OpenGL畫出三維空間點圖,但(x,y,z)位置不能寫死。 目前參考網路上範例,已經能以寫死的方式畫出點圖, 但卻只要改成動態就會錯誤.. 程式碼(Code):(請善用置底文網頁, 記得排版) https://gist.github.com/anonymous/9065974 補充說明(Supplement): 原本如果Display()中沒有變數,是可以寫死的方式畫出點圖, 但只要寫成動態輸入,例如:Display(float x,float y,float z),就會有錯誤訊息。 錯誤訊息如下: error C2664: 'glutDisplayFunc' : 無法將參數 1 從 'void (__cdecl *)(float,float,float)' 轉換成 'void (__cdecl *)(void)' 麻煩各位前輩給點意見Orz 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.51.180

02/18 15:23, , 1F
glutDisplayFunc 可以接受有參數的 function嗎?
02/18 15:23, 1F

02/18 15:24, , 2F
很多人從來不去看錯誤訊息,直接就點掉了
02/18 15:24, 2F

02/18 15:36, , 3F
冏 那請問有任何替代方案嗎? 還是OpenGL只能寫死呢
02/18 15:36, 3F

02/18 15:54, , 4F
Global variable 或替代品們
02/18 15:54, 4F

02/18 17:17, , 5F
把畫圖的部份從 DisplayFunc 拉出去獨立成另一個函數
02/18 17:17, 5F

02/18 21:04, , 6F
有點擔心你是不是理解錯誤了,display是被glut呼叫
02/18 21:04, 6F

02/18 21:05, , 7F
而不是被使用者直接呼叫,你怎麼會想要放參數在那邊?
02/18 21:05, 7F

02/18 21:05, , 8F
難不成你想要呼叫那個display很多次來畫出一堆點?
02/18 21:05, 8F

02/18 21:08, , 9F
glutDisplayFunc會記住你給他的func point
02/18 21:08, 9F

02/18 21:09, , 10F
需要重畫畫面時,就照你寫的display執行工作
02/18 21:09, 10F

02/18 21:11, , 11F
你可以準備一個global資料結構放置要畫出的點
02/18 21:11, 11F

02/18 21:11, , 12F
然後display就只畫出資料內容
02/18 21:11, 12F

02/18 21:12, , 13F
如果動態變化了資料,就下glutPostRedisplay重畫
02/18 21:12, 13F

02/18 21:13, , 14F
display就會被glut再次呼叫,然後展現出更新後的畫面
02/18 21:13, 14F

03/02 15:51, , 15F
感謝樓上前輩們的回覆~!!
03/02 15:51, 15F
文章代碼(AID): #1J0mZJ9g (C_and_CPP)