OpenGL: нет света для простого перенасыщенного куба - PullRequest
4 голосов
/ 18 июня 2011

OpenGL: нет света для простого перенасыщенного куба

Привет, я пытаюсь изучать свет в opengl и перенасыщении, но у меня проблемы довольно рано. У меня есть этот код для создания освещенного куба в пользовательской позиции с пользовательской настройкой камеры:

void testApp::draw(){
    static float amb[] =  {0.4, 0.4, 0.4, 0.0};
    static float dif[] =  {1.0, 1.0, 1.0, 0.0};
    
    float light_diffuse[] = {1.0, 0.0, 1.0, 1.0}; 
    float light_position[] = {-1.0, 1.0, 1.0, 0.0}; // i tried a lot of positions here!
    
    // set camera
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0, 200, 1200, 0,0,0, 0,1,0);

    // set lights
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHT1);
    glEnable(GL_LIGHTING);
    glMaterialfv(GL_FRONT, GL_AMBIENT, amb);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, dif);

    // draw scene
    ofScale(50, 50, 50);
    glPushMatrix();

    glutSolidCube(2);

    // close everything
    glPopMatrix();
    glDisable(GL_LIGHT0);
    glDisable(GL_LIGHT1);
    glDisable(GL_LIGHTING); }

Я вижу только черный куб, нет света, я думаю, что проблема в светлой позиции, я перепробовал много позиций, но она не работает: черный куб.

1 Ответ

5 голосов
/ 18 июня 2011

Вы действительно далеко от своего куба. Сделайте его меньше и подвиньте его ближе. Или измените ваше освещение следующим образом:

float light_diffuse[] = {100.0, 0.0, 100.0, 100.0}; 
float light_position[] = {-100.0, 100.0, 1.0, 0.0};

Вы вряд ли увидите световые эффекты на кубе. Попробуйте использовать чайник .

...