Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.148.71] |
|
Сообщ.
#1
,
|
|
|
Использую я borlandc c 5.02
вот решил порисовать что-нибудь у меня возникла проблема: часто вылетает будь то в результате запуска из компилятора или же просто так. окно создаю с тем стилем который советуют в opengl.hlp ..в чем проблема ? может быть исходник это через чур но все же: #include <windows.h> #include <gl\gl.h> #include <gl\glu.h> HWND hwnd; HINSTANCE hi; PIXELFORMATDESCRIPTOR pfd; int pixelformat; MSG msg; HDC hdc; HGLRC hgl; WNDCLASS wc; LRESULT CALLBACK prog (HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain (HINSTANCE h,HINSTANCE ,LPSTR,int ) { hi=h; memset(&wc,0,sizeof(wc)); wc.lpfnWndProc=prog; wc.hInstance=h; wc.hbrBackground=(HBRUSH)(9); wc.lpszClassName="multy"; RegisterClass(&wc); hwnd=CreateWindow("multy","multy",WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,0,0,640,480,NULL,NULL,h,NULL); hdc=GetDC(hwnd); ShowWindow(hwnd,SW_SHOW); memset(&pfd,0,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 = 32; pixelformat = ChoosePixelFormat(hdc, &pfd); SetPixelFormat(hdc, pixelformat, &pfd); hgl=wglCreateContext(hdc); wglMakeCurrent(hdc,hgl); while(GetMessage(&msg,NULL,0,0)) { DispatchMessage(&msg); } wglMakeCurrent(NULL, NULL); ReleaseDC(hwnd,hdc); wglDeleteContext(hgl); return(0); } LRESULT CALLBACK prog(HWND hwnd1,UINT msg1,WPARAM w,LPARAM l) { switch(msg1) { case WM_PAINT: glBegin(GL_POLYGON); glColor4f(1,0,0,0);glVertex2d(-1,-1);glVertex2d(0,1);glVertex2d(1,0) ;glEnd();glFlush();SwapBuffers(hdc);break; case WM_DESTROY:PostQuitMessage(0); break; default:return(DefWindowProc(hwnd1,msg1,w,l)); } return(0); } |
Сообщ.
#2
,
|
|
|
Вроде бы все правильно только, перед SwapBuff flush вызывать не обязательно. И лучше используй Билдер.
|