return0; caseWM_DESTROY: return0; caseWM_KEYDOWN: switch(wParam) { caseVK_ESCAPE: PostQuitMessage(0); return0; } return0; default: returnDefWindowProc(hWnd,message,wParam,lParam); } } /******************* *EnableOpenGL *******************/ voidEnableOpenGL(HWNDhWnd,HDC*hDC,HGLRC*hRC) { PIXELFORMATDESCRIPTORpfd; intiFormat; /*getthedevicecontext(DC)*/ *hDC=GetDC(hWnd); /*setthepixelformatfortheDC*/ ZeroMemory(&pfd,sizeof(pfd)); pfd.nSize=sizeof(pfd); pfd.nVersion=1; pfd.dwFlags=PFD_DRAW_TO_WINDOW| PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER; pfd.iPixelType=PFD_TYPE_RGBA; pfd.cColorBits=24; pfd.cDepthBits=16; pfd.iLayerType=PFD_MAIN_PLANE; iFormat=ChoosePixelFormat(*hDC,&pfd); SetPixelFormat(*hDC,iFormat,&pfd); /*createandenabletherendercontext(RC)*/ *hRC=wglCreateContext(*hDC); wglMakeCurrent(*hDC,*hRC); } /****************** *DisableOpenGL ******************/ voidDisableOpenGL(HWNDhWnd,HDChDC,HGLRChRC) { wglMakeCurrent(NULL,NULL); wglDeleteContext(hRC); ReleaseDC(hWnd,hDC); } Keluaran program di atas akan menganimasikan kotak dengan warna-warni yang menarik dan berputar berlawanan arah jarum jam. Gambar kotak yang terjadi seperti berikut:
Gambar 11.4. Grafik berwarna warni Jika diperhatikan atau dipelajari pasti akan Menarik bukan? Warna- warna tersebut dimunculkan dengan mengkombinasikan argumen- argumen pada perintah glColor3f, cermati dalam listing program. Dalam program yang sesungguhnya kotak tersebut selain berwarna-warni juga berputar berlawanan arah putaran jarum jam (counter clockwise). Perintah apa yang membuat kotak ini berputar ? Kita lihat program di atas: glRotatef(theta,0.0f,0.0f,1.0f); sesuai namanya perintah di ataslah yang menyebabkan kotak ini berputar. Format perintah ini secara lengkapnya sebagai berikut :
Argumen pertama theta untuk mengatur kecepatan putar makin besar angkanya makin cepat putaran yang terjadi Argumen kedua jika diisi 1 (1.0) maka kotak akan berputar dengan sumbu garis horizontal (mendatar) ke arah tertentu. Untuk memutar ke arah yang berlawanan dari
Next read halaman 8.