Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > OpenGL - свет


Автор: MoreHate 22.3.2005, 19:38
Ребята, помогите с OpenGL

Никак не могу включить свет.

вот кусок кода

Код

bool light=true;

//в initial прописано    glEnable(GL_LIGHTING);

int DrawGLScene(GLvoid)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    // Clear Screen And Depth Buffer

    glEnable(GL_TEXTURE_2D);

    GLfloat LightAmbient[]=        { 0.5f, 0.5f, 0.5f, 1.0f };
    GLfloat LightDiffuse[]=        { 1.0f, 1.0f, 1.0f, 1.0f };
    GLfloat LightPosition[]=    { 0.0f, 0.0f, 2.0f, 1.0f };

    glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);        // Setup The Ambient Light
    glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);        // Setup The Diffuse Light
    glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);    // Position The Light
    glEnable(GL_LIGHT1);



    //далее рисуем кубик...
    //вот так рисуем
    glNormal3f(0.0f,0.0f,1.0f);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f);
    //...
}
//Далее делаем
    if(wParam == 'L') {
        if(light == true) {
            glDisable(GL_LIGHTING);
            light = false;
        } else {
            glEnable(GL_LIGHTING);
            light = true;
        }
    }


Так вот, ничего не происходит. Где ошибка - ума не приложу. Код получился почти 1 в один с NeHe, но у него работает, а у меня - нет smile.

Автор: MoreHate_ 26.3.2005, 08:36
Ок, свет я все-таки включил. Теперь у меня другой вопрос. Не могу разобраться с источником света. Перепробовал кучу парамтров, перерыл тонны доки - не врубаюсь пока smile

Может кто-нибудь написать параметры источника света, имитирующего свет фонарика в полной темноте?

Автор: PPS05 6.11.2005, 11:19
Вот что нашёл smile :

glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, <направление (вектор)>)
// по умолчанию (0,0,-1)

glLightfv(GL_LIGHT1, GL_SPOT_CUTOFF, <угловой радиус>)
// допускаемые значения: интервал [0; 90] и 180 градусов
// по умолчанию 180 градусов, т.е. во все стороны

Автор: Exekutor 7.11.2005, 10:19
Посмотри в инете книгу Тарасова про опенгл. Там хорошо описывается работа со светом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)