PMG http://forum.pmg.org.ru/ |
|
Помогите сменить цвет обекта... http://forum.pmg.org.ru/viewtopic.php?f=1&t=6671 |
Страница 1 из 1 |
Автор: | Alexus [ 11 май 2008 15:18 ] |
Заголовок сообщения: | Помогите сменить цвет обекта... |
Приятного времени суток всем... Пусть название темы звучит очень бонально, но тем не менее.. Уже часов 5 этот долбаный код и не получается никак.. Вообщем цель такова.. Нужно изменить цвет сферы. Пробовал писать glColor3f(1.0f,0.0f,0.0f) перед самим рисованием.. не работает всё равно.. Вот содранный код: Код: #include <windows.h> #include <gl\gl.h> #include <gl\glu.h> #include <gl\glaux.h> #pragma comment (lib, "OpenGL32.lib") #pragma comment (lib, "Glu32.lib") #pragma comment (lib, "Glaux.lib") static GLint resW = 640, resH = 480; bool isFullscr = true; static GLdouble cntr; BOOL keys[256]; HGLRC hGLRC; HDC hDC; static GLfloat light1_position[] = {0.0, 0.0, 3.0, 1.0}; GLvoid InitGL() { // LoadGLTextures(); //GLfloat white_light[] = {1.0, 1.0, 1.0, 1.0}; glClearColor (0.5, 0.5, 1, 0.5); GLfloat light_position[] = {0.0, 0.0, 10.0, 1.0}; glLightf (GL_LIGHT0, GL_SPOT_EXPONENT, 20.0); glLightfv (GL_LIGHT0, GL_POSITION, light_position); glLightf (GL_LIGHT0, GL_SPECULAR, 128); glEnable (GL_LIGHTING); glEnable (GL_LIGHT0); glShadeModel (GL_SMOOTH); glEnable (GL_DEPTH_TEST); glEnable (GL_AUTO_NORMAL); glEnable (GL_NORMALIZE); glEnable (GL_CULL_FACE); glCullFace (GL_BACK); } void reshape(int width,int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective (50.0, (GLfloat)width/(GLfloat)height, 1.0, 100.0); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); } void display() { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glPushMatrix(); cntr +=0.1; glTranslatef (0.0, 0.0, -8); glRotated(cntr, 90, 0, 90); ///////!!glColor3d(1,0,0);!!/////// вот в этом месте косяк.. auxSolidSphere (1); auxWireTorus(1,2); if (cntr >= 360.0f) cntr =0.0f; glPopMatrix(); glFlush(); } LRESULT CALLBACK WindowFunc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { RECT Screen; GLuint PixelFormat; static PIXELFORMATDESCRIPTOR pfd= { sizeof(PIXELFORMATDESCRIPTOR), 1, // Iiia? aa?nee PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 32, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; switch(message) { case WM_CREATE: hDC = GetDC(hWnd); PixelFormat = ChoosePixelFormat(hDC, &pfd); if (!PixelFormat) { MessageBox (0, "Error!", "Error", MB_OK | MB_ICONERROR); SendMessage(hWnd, WM_DESTROY, wParam, lParam); break; } SetPixelFormat (hDC, PixelFormat, &pfd); if (!SetPixelFormat (hDC, PixelFormat, &pfd)) { MessageBox (0, "Error!","Error", MB_OK | MB_ICONERROR); SendMessage(hWnd, WM_DESTROY, wParam, lParam); break; } hGLRC = wglCreateContext (hDC); if (!hGLRC) { MessageBox (0, "Error OpenGL!","Error", MB_OK | MB_ICONERROR); SendMessage(hWnd, WM_DESTROY, wParam, lParam); break; } wglMakeCurrent(hDC, hGLRC); if (!wglMakeCurrent(hDC, hGLRC)) { MessageBox (0, "Error", "Error!!!", MB_OK | MB_ICONERROR); SendMessage(hWnd, WM_DESTROY, wParam, lParam); break; } InitGL (); break; case WM_DESTROY: case WM_CLOSE: ChangeDisplaySettings (NULL, 0); if(hDC) wglMakeCurrent(hDC, NULL); if(hGLRC) wglDeleteContext(hGLRC); if(hWnd) ReleaseDC(hWnd, hDC); PostQuitMessage(0); break; case WM_SIZE: GetClientRect (hWnd, &Screen); reshape(Screen.right, Screen.bottom ); break; case WM_SYSKEYDOWN: case WM_KEYDOWN: keys[wParam] = TRUE; break; case WM_SYSKEYUP: case WM_KEYUP: keys[wParam] = FALSE; break; default: return DefWindowProc(hWnd,message,wParam,lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR str,int nWinMode) { MSG msg; WNDCLASS wc; HWND hWnd; wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = WindowFunc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "OpenGLWinClass"; if (!RegisterClass(&wc)) { MessageBox(0, "Error","Error!!!", MB_OK | MB_ICONERROR); return FALSE; } if(isFullscr) { hWnd = CreateWindow( "OpenGLWinClass", "O?IE 01 >OpenGL is COOL", WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0, resW, resH, NULL, NULL, hInstance, NULL); } else { hWnd = CreateWindow( "OpenGLWinClass", "O?IE 01 >OpenGL is COOL", WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE | WS_SIZEBOX, 0, 0, resW, resH, NULL, NULL, hInstance, NULL); } if (!hWnd) { MessageBox(0, "Error","Error!!!", MB_OK | MB_ICONERROR); return FALSE; } if(isFullscr) { DEVMODE dmScreenSettings; memset (&dmScreenSettings, 0, sizeof(DEVMODE)); dmScreenSettings.dmSize = sizeof(DEVMODE); dmScreenSettings.dmPelsWidth = resW; dmScreenSettings.dmPelsHeight = resH; dmScreenSettings.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; ChangeDisplaySettings (&dmScreenSettings, CDS_FULLSCREEN); } ShowWindow(hWnd,nWinMode); UpdateWindow(hWnd); SetFocus(hWnd); while (1) { while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { if (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } else return TRUE; } display(); SwapBuffers(hDC); if (keys[VK_ESCAPE]) SendMessage(hWnd, WM_CLOSE, 0, 0); } } Спасибо! |
Автор: | MagicWolf [ 12 май 2008 10:14 ] |
Заголовок сообщения: | Re: Помогите сменить цвет обекта... |
Если можно выложи на файлобменник проект. |
Автор: | Alexus [ 12 май 2008 19:08 ] |
Заголовок сообщения: | Re: Помогите сменить цвет обекта... |
Сергей, огромное спасибо за помощь, пусть и не большую... Такое чувство, что только на Вас и держится этот форум. Вообщем трабл был в том, что я не прописал материал этих объектов. теперь всё работает Тему можно del. |
Автор: | MagicWolf [ 13 май 2008 08:30 ] |
Заголовок сообщения: | Re: Помогите сменить цвет обекта... |
Alexus писал(а): Сергей, огромное спасибо за помощь, пусть и не большую... Опытные программисты в трудных ситуациях разговаривают с игрушечными мишками, если рядом нет чуткого коллеги . Alexus писал(а): Такое чувство, что только на Вас и держится этот форум. Форум был создан для поддержки уроков NeHe ... Alexus писал(а): Тему можно del. Да не зачем, впрочем если есть желание, еще раз подтверди и тогда del. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |