sk1LL
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору war2005 #include <GL/gl.h> #include <GL/glu.h> #include <GL/glaux.h> BOOL bSetupPixelFormat(HDC hdc) { PIXELFORMATDESCRIPTOR pfd, *ppfd; int pixelformat; ppfd = &pfd; ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR); ppfd->nVersion = 1; ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; ppfd->dwLayerMask = PFD_MAIN_PLANE; ppfd->iPixelType = PFD_TYPE_RGBA; ppfd->cColorBits = 16; ppfd->cDepthBits = 16; ppfd->cAccumBits = 0; ppfd->cStencilBits = 0; if ((pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0) { MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK); return FALSE; } if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE) { MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK); return FALSE; } return TRUE; } void __fastcall TForm1::FormCreate(TObject *Sender) { ghDC = GetDC(Handle); if (!bSetupPixelFormat(ghDC)) Close(); ghRC = wglCreateContext(ghDC); wglMakeCurrent(ghDC, ghRC); glClearColor(0.0, 0.0, 0.0, 0.0); FormResize(Sender); glEnable(GL_COLOR_MATERIAL); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); float p[4]={3,3,3,1}, d[3]={-1,-1,-3}; glLightfv(GL_LIGHT0,GL_POSITION,p); glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,d); } void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { if(ghRC) { wglMakeCurrent(ghDC,0); wglDeleteContext(ghRC); } if(ghDC) ReleaseDC(Handle, ghDC); } void TForm1::Draw() { glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT); GLUquadricObj *quadObj; quadObj:=gluNewQuadric(); gluQuadricDrawStyle(quadObj, GLU_FILL); glColor3f(1,0,0); gluSphere(quadObj, 2,10,10); glRotatef(3, 0,1,0); gluDeleteQuadric(quadObj); SwapBuffers(ghDC); } Это просто отрывки, не поленись разобраться и как следует выполнить. Тут работы-то на десять минут. Удачи! |