看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
xpride:glutDisplayFunc 可以接受有參數的 function嗎? 02/18 15:23
xpride:很多人從來不去看錯誤訊息,直接就點掉了 02/18 15:24
Hack:冏 那請問有任何替代方案嗎? 還是OpenGL只能寫死呢 02/18 15:36
Feis:Global variable 或替代品們 02/18 15:54
Bencrie:把畫圖的部份從 DisplayFunc 拉出去獨立成另一個函數 02/18 17:17
iamstudent:有點擔心你是不是理解錯誤了,display是被glut呼叫 02/18 21:04
iamstudent:而不是被使用者直接呼叫,你怎麼會想要放參數在那邊? 02/18 21:05
iamstudent:難不成你想要呼叫那個display很多次來畫出一堆點? 02/18 21:05
iamstudent:glutDisplayFunc會記住你給他的func point 02/18 21:08
iamstudent:需要重畫畫面時,就照你寫的display執行工作 02/18 21:09
iamstudent:你可以準備一個global資料結構放置要畫出的點 02/18 21:11
iamstudent:然後display就只畫出資料內容 02/18 21:11
iamstudent:如果動態變化了資料,就下glutPostRedisplay重畫 02/18 21:12
iamstudent:display就會被glut再次呼叫,然後展現出更新後的畫面 02/18 21:13
Hack:感謝樓上前輩們的回覆~!! 03/02 15:51