Воскресенье, 05.05.2024, 09:21
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Категории раздела
Форма входа
ДРУЗЬЯ САЙТА

Вызвать мастера в Красноярске

8 983 207 5474

8 902 918 9334

8 933 332 3164

---------------------------------

Запчасти бытткхники

  • Велес т.2935600
  • СЦ Близнецов т.2296595
  • Вираж
  • Красраб 110 т.2589503
  • Комплекстур Щорса30 т.2606797
  • Радиодетали

  • Якорный 9 т.2688317
  • Воронова 16 т.2202990
  • Красраб 125а т.2456544
  • Профи т.2702737
  • Дайте две т.+79237713323
  • Электрика

  • Электро +
  • Планета электрика
  • ЗАКЛАДКИ
    Поиск
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Главная » Статьи » C++ Builder » Консоль

    Модель освещения OpenGL консоль c++ Builder 6 Glut

    Модель освещения  OpenGL консоль c++ Builder 6 Glut

    Исходник и исполняемый файл здесь

    =

    =

    #include <GL/glut.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    //#include <iostream>
    #include <stdlib.h>
    #include <windows.h>
    #pragma hdrstop

    //---------------------------------------------------------------------------
    /* параметры материала тора */
    float mat1_dif[]={0.8f,0.8f,0.0f};
    float mat1_amb[]= {0.2f,0.2f,0.2f};
    float mat1_spec[]={0.6f,0.6f,0.6f};
    float mat1_shininess=0.5f*128;

    /* параметры материала конуса */
    float mat2_dif[]={0.0f,0.0f,0.8f};
    float mat2_amb[]= {0.2f,0.2f,0.2f};
    float mat2_spec[]={0.6f,0.6f,0.6f};
    float mat2_shininess=0.7f*128;

    /* параметры материала шара */
    float mat3_dif[]={0.9f,0.2f,0.0f};
    float mat3_amb[]= {0.2f,0.2f,0.2f};
    float mat3_spec[]={0.6f,0.6f,0.6f};
    float mat3_shininess=0.1f*128;

    /* Инициализируем параметры материалов и
     * источника света
     */
    void init (void)
    {
       GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
       GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
       GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
       GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };

       /* устанавливаем параметры источника света */
       glLightfv (GL_LIGHT0, GL_AMBIENT, light_ambient);
       glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse);
       glLightfv (GL_LIGHT0, GL_SPECULAR, light_specular);
       glLightfv (GL_LIGHT0, GL_POSITION, light_position);

       /* включаем освещение и источник света */

        glEnable (GL_LIGHTING);
        glEnable (GL_LIGHT0);

        /* включаем z-буфер */
        glEnable(GL_DEPTH_TEST);

    }

    /* Функция вызывается при необходимости
     * перерисовки изображения. В ней осуществляется
     * весь вывод геометрии.
     */
    void display (void)
    {
       /* очищаем буфер кадра и буфер глубины */
       glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glPushMatrix ();
        glRotatef (20.0, 1.0, 0.0, 0.0);

        /* отображаем тор */
        glMaterialfv (GL_FRONT,GL_AMBIENT,mat1_amb);
        glMaterialfv (GL_FRONT,GL_DIFFUSE,mat1_dif);
        glMaterialfv (GL_FRONT,GL_SPECULAR,mat1_spec);
        glMaterialf (GL_FRONT,GL_SHININESS,mat1_shininess);

        glPushMatrix ();
        glTranslatef (-0.75, 0.5, 0.0);
        glRotatef (90.0, 1.0, 0.0, 0.0);
        glutSolidTorus (0.275, 0.85, 15, 15);
        glPopMatrix ();

        /* отображаем конус */
        glMaterialfv (GL_FRONT,GL_AMBIENT,mat2_amb);
        glMaterialfv (GL_FRONT,GL_DIFFUSE,mat2_dif);
        glMaterialfv (GL_FRONT,GL_SPECULAR,mat2_spec);
        glMaterialf (GL_FRONT,GL_SHININESS,mat2_shininess);

        glPushMatrix ();
        glTranslatef (-0.75, -0.5, 0.0);
        glRotatef (270.0, 1.0, 0.0, 0.0);
        glutSolidCone (1.0, 2.0, 15, 15);
        glPopMatrix ();

        /* отображаем шар */
        glMaterialfv (GL_FRONT,GL_AMBIENT,mat3_amb);
        glMaterialfv (GL_FRONT,GL_DIFFUSE,mat3_dif);
        glMaterialfv (GL_FRONT,GL_SPECULAR,mat3_spec);
        glMaterialf (GL_FRONT,GL_SHININESS,mat3_shininess);

        glPushMatrix ();
        glTranslatef (0.75, 0.0, -1.0);
        glutSolidSphere (1.0, 15, 15);
        glPopMatrix ();

        /* выводим сцену на экран */
        glFlush ();
    }

    /* Вызывается при изменении пользователем размеров окна
     */
    void reshape(int w, int h)
    {
      /* устанавливаем размер области вывода
       * равным размеру окна
       */
      glViewport (0, 0, (GLsizei) w, (GLsizei) h);

        /* задаем матрицу проекции с учетом размеров окна */
        glMatrixMode (GL_PROJECTION);
        glLoadIdentity ();

        gluPerspective(
          40.0, /* угол зрения в градусах */
          (GLfloat)w/h, /* коэффициент сжатия окна */
          1,100.0); /* расстояние до плоскостей отсечения */
        glMatrixMode (GL_MODELVIEW);

        glLoadIdentity ();
        gluLookAt(
         0.0f,0.0f,8.0f, /* положение камеры */
         0.0f,0.0f,0.0f, /* центр сцены */
         0.0f,1.0f,0.0f); /* положительное направление оси y */
    }

    /* Вызывается при нажатии клавиши на клавиатуре */
    void keyboard(unsigned char key, int x, int y)
    {
       switch (key) {
          case 27: /* escape */
             exit(0);
             break;
       }

    }

    //--------------------------------------------------------------------------
    /* Главный цикл приложения.
     * Создается окно, устанавливается режим
     * экрана с буфером глубины
     */
    #pragma argsused
    int main(int argc, char* argv[])
    {
    ShowWindow(GetConsoleWindow(), SW_MINIMIZE);
    SetWindowLong(GetConsoleWindow(),GWL_EXSTYLE,WS_EX_TOOLWINDOW);

       glutInit(&argc, argv);
       glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
       glutInitWindowSize (500, 500);
       glutCreateWindow ("dokakodm.ucoz.ru");// (argv[0]);
       init ();
       glutReshapeFunc (reshape);
       glutDisplayFunc (display);
       glutKeyboardFunc (keyboard);
       glutMainLoop();
       
            return 0;
    }
    //---------------------------------------------------------------------------

    =

    Категория: Консоль | Добавил: doka (29.10.2020)
    Просмотров: 464 | Рейтинг: 0.0/0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]