Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [OpenGL] освещение не тем цветом 
V
    Опции темы
BezImeni
  Дата 13.4.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 7.5.2006

Репутация: нет
Всего: нет



Вокруг Солнца - от него исходит белый свет - должны планеты носиться (синего цвета), а получаются белого   smile 

Как  smile 
Код

#include <gl/glut.h>

int YEAR = 0;
int DAY  = 0;

void drawSun();
void drawPlanet_1();
void drawPlanet_2();
void drawPlanet_3();

void init()
{
   GLfloat LIGHT_POSITION[] = {0.0, 0.0, 0.0, 1.0};  
   GLfloat WHITE_LIGHT[]    = {1.0, 1.0, 1.0, 0.0};
        
   glClearColor(0.0, 0.0, 0.0, 0.0);   
   glShadeModel(GL_SMOOTH);   

   glLightfv(GL_LIGHT0, GL_POSITION, LIGHT_POSITION);
   glLightfv(GL_LIGHT0, GL_DIFFUSE, WHITE_LIGHT);
   glLightfv(GL_LIGHT0, GL_SPECULAR, WHITE_LIGHT);
   
   
   glEnable(GL_LIGHTING);   
   glEnable(GL_LIGHT0);
   glEnable(GL_DEPTH_TEST);
}

void reshape(int w, int h)
{
    glViewport(0, 0,(GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(120.0, (GLfloat) w/ (GLfloat) h, 1.0, 20.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
        glColor3f(1.0, 1.0, 0.0);
        drawSun();
   
        glColor3f(0.0, 0.0, 1.0);
        drawPlanet_1();
    drawPlanet_2();
    drawPlanet_3();
    
    
    glutSwapBuffers();
}

void keyboard(unsigned char key, int x, int y)
{
    switch(key)
    {
        case 'd':
            DAY = (DAY + 10) % 360;
            glutPostRedisplay();
            break;
        case 'D':
            DAY = (DAY - 10) % 360;
            glutPostRedisplay();
            break;
        case 'y':
            YEAR = (YEAR + 5) % 360;
            glutPostRedisplay();
            break;
        case 'Y':
            YEAR = (YEAR - 5) % 360;
            glutPostRedisplay();
            break;
        default:
            break;
    }
}




int main(int argc, char *argv[])
{
   glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
    glutInitWindowSize(800, 800);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Sun");
    init();
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutMainLoop();
    return 0;  
}

void drawSun()
{
        glPushMatrix();
        glRotatef((GLfloat)DAY, 0.0, 1.0, 0.0);
    glutSolidSphere(1.0, 20, 16);
    glPopMatrix(); 
}

void drawPlanet_1()
{
        glPushMatrix();
    glRotatef((GLfloat)YEAR, 0.0, 1.0, 0.0);
    glTranslatef(2.0, 0.0, 0.0);
    glRotatef((GLfloat)DAY, 0.0, 1.0, 0.0);
    glutSolidSphere(0.2, 10, 8);
    glPopMatrix();   
}

void drawPlanet_2()
{
    glPushMatrix();
    glRotatef((GLfloat)YEAR, 0.0, 1.0, 0.0);
    glTranslatef(3.0, 0.0, 0.0);
    glRotatef((GLfloat)DAY, 0.0, 1.0, 0.0);
    glutSolidSphere(0.25, 10, 8);
    glPopMatrix();   
}

void drawPlanet_3()
{
        glPushMatrix();
    glRotatef((GLfloat)YEAR, 0.0, 1.0, 0.0);
    glTranslatef(4.0, 0.0, 0.0);
    glRotatef((GLfloat)DAY, 0.0, 1.0, 0.0);
    glutSolidSphere(0.15, 10, 8);
    glPopMatrix(); 
}
  
PM MAIL   Вверх
Rickert
Дата 15.4.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Я так подозреваю - у тебя все объекты очень близко к источнику света, который очень ярок. Снизь яркость света.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
BezImeni
Дата 16.4.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 7.5.2006

Репутация: нет
Всего: нет



снизил - не помогает  ничего smile 
и отодвигать обьекты от источника пробовал - тоже  smile 
PM MAIL   Вверх
X-3R1
Дата 7.5.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 28.4.2007

Репутация: 1
Всего: 2



Возможно уже не актуально, но всё же: 
добавь в init():
Код

glEnable ( GL_COLOR_MATERIAL );

Это разрешит управление цветом материала функции glColor.
PM MAIL   Вверх
BezImeni
Дата 7.6.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 7.5.2006

Репутация: нет
Всего: нет



X-3R1  Спасибо!  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.