280 likes | 526 Views
3D Game Programming Lab1- GLUT Programming. Ming-Te Chi Department of Computer Science National Chengchi University. Outline. Code blocks 下載及安裝 Glut bin file 下載及配置 建立一個 glut 範例程式 Example[Bounce]. Code::Blocks 下載. 下載網址 http://www.codeblocks.org/. 點選 Download.
E N D
3D Game ProgrammingLab1- GLUT Programming Ming-Te Chi Department of Computer Science National Chengchi University
Outline • Code blocks下載及安裝 • Glut bin file下載及配置 • 建立一個glut範例程式 • Example[Bounce]
Code::Blocks下載 • 下載網址 • http://www.codeblocks.org/
請依照所適用之OS作下載(在此僅以windows 系統做示範教學) 兩者選一點擊下載
Glut bin file下載及配置 • 下載網址 • http://www.xmission.com/~nate/glut.html
Install glut • After you download and open the GLUT bin zip file Do the following! Copy glut32.dll to c:\windows\system32 or c:\windows\SysWOW64 (win 64) Copy glut32.lib to c:\program files\CodeBlocks\mingw\lib Copy glut.h to c:\program files\CodeBlocks\mingw\include\GL
Freeglut( 另一個glut選擇 ) • http://files.transmissionzero.co.uk/software/development/GLUT/freeglut-MinGW.zip Copy freeglut.dll to c:\windows\system32 or c:\windows\SysWOW64 (win 64) Copy libfreeglut.a to c:\program files\CodeBlocks\mingw\lib Copy freeglut.h, freeglut_std.h, and freeglut_ext.h to c:\program files\CodeBlocks\mingw\include\GL
建立一個gluttemplate • File -> New -> Project
選擇GLUT • 為project命名
指定路徑至MinGW • 直接按下Finish
按下 (F9) to Build and run 則會出現以下執行畫面
static void key(unsigned char key, int x, int y) { case '+': slices++; stacks++; case '-': if (slices>3 && stacks>3) { slices--; stacks--; } } //The number of geometry stacks and slices can be adjusted using the ‘+’ and ‘-’ keys.
Troubleshooting in windows • add at line 18: #include <windows.h>
如果放對位置,但仍找不到glut.h • 請依下面流程,檢查路徑是否有你預期的一樣
Example [Bounce] void glutTimerFunc (unsigned int msecs, void(*func)(int value), int value); Key Function *Registers a timer callback to be triggered in a specified number of milliseconds. • msecs:Number of milliseconds to pass before calling the callback. • func:The timer callback function. • value:Integer value to pass to the timer callback.
Bounce animation • …
void TimerFunction(int value) { // Reverse direction left 、right 、top 、bottom edge if(x1>windowWidth-rsize || x1<0) xstep=-xstep; if(y1>windowHeight-rsize || y1<0) ystep=-ystep; //Check bounds if(x1>windowWidth-rsize) x1=windowWidth-rsize-1; if(y1>windowHeight-rsize) y1=windowHeight-rsize-1; //Actually move the square x1+=xstep; y1+=ystep; //Redraw the scene with new coordinates glutPostRedisplay(); glutTimerFunc(33,TimerFunction,1); //self recall per 33msecs. }
參考教學網址: • http://www.codeblocks.org/ • http://www.xmission.com/~nate/glut.html • http://www.sci.brooklyn.cuny.edu/~goetz/codeblocks/glut/ • http://www.opengl.org/sdk/docs/man/