PMG

Форумы по созданию игр
Текущее время: 05 дек 2022 09:10

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Помогите сменить цвет обекта...
СообщениеДобавлено: 11 май 2008 15:18 
Не в сети
Новичок

Зарегистрирован: 11 май 2008 14:29
Сообщения: 6
Приятного времени суток всем...
Пусть название темы звучит очень бонально, но тем не менее..
Уже часов 5 :sex: этот долбаный код и не получается никак..

Вообщем цель такова.. Нужно изменить цвет сферы. Пробовал писать 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);

}

}


Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите сменить цвет обекта...
СообщениеДобавлено: 12 май 2008 10:14 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Если можно выложи на файлобменник проект.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите сменить цвет обекта...
СообщениеДобавлено: 12 май 2008 19:08 
Не в сети
Новичок

Зарегистрирован: 11 май 2008 14:29
Сообщения: 6
Сергей, огромное спасибо за помощь, пусть и не большую...
Такое чувство, что только на Вас и держится этот форум.

Вообщем трабл был в том, что я не прописал материал этих объектов.
теперь всё работает :clap:

Тему можно del.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите сменить цвет обекта...
СообщениеДобавлено: 13 май 2008 08:30 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Alexus писал(а):
Сергей, огромное спасибо за помощь, пусть и не большую...


Опытные программисты в трудных ситуациях разговаривают с игрушечными мишками, если рядом нет чуткого коллеги :P .

Alexus писал(а):
Такое чувство, что только на Вас и держится этот форум.


Форум был создан для поддержки уроков NeHe ...

Alexus писал(а):
Тему можно del.


Да не зачем, впрочем если есть желание, еще раз подтверди и тогда del.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB