Воскресенье, 05.05.2024, 08:45
Главная Регистрация 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 » Консоль

    Простое GLUT-приложение

    Простое GLUT-приложение

    Этот  простой  пример  предназначен  для  демонстрации  структуры 
    GLUT-приложения  и  простейших  основ OpenGL. Результатом  работы 
    программы  является  случайный  набор  цветных  прямоугольников, 
    который меняется при нажатии левой кнопки мыши. С помощью правой 
    кнопки мыши можно менять режим заливки прямоугольников. 

    Основы OpenGL читать здесь и пример отсюда-же 

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

    =

    =

    =

    #include <GL/glut.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    //#include <iostream>
    #include <stdlib.h>
    #include <windows.h>  // ShowWindow(GetConsoleWindow(), SW_MINIMIZE);  //скрываем консольное окно
    #pragma hdrstop

    //---------------------------------------------------------------------------
    #ifdef random
    #undef random
    #endif

    #define random(m) (float)rand()*m/RAND_MAX

    /* ширина и высота окна */
    GLint Width = 512, Height = 512;
    /* число прямоугольников в окне */
    int   Times = 100;
    /* с заполнением ?*/
    int   FillFlag = 1;

    long   Seed = 0;

    /* функция отображает прямоугольник */
    void DrawRect( float x1, float y1, float x2, float y2,
              int FillFlag )
    {
      glBegin(FillFlag ? GL_QUADS : GL_LINE_LOOP);
      glVertex2f(x1, y1);
      glVertex2f(x2, y1);
      glVertex2f(x2, y2);
      glVertex2f(x1, y2);
      glEnd();
    }

    /* управляет всем выводом на экран */
    void Display(void)
    {
      int i;
      float x1, y1, x2, y2;
      float r, g, b;

        srand(Seed);

        glClearColor(0, 0, 0, 1);
        glClear(GL_COLOR_BUFFER_BIT);

        for( i = 0; i < Times; i++ ) {
          r = random(1);
          g = random(1);
          b = random(1);
          glColor3f( r, g, b );

            x1 = random(1) *   Width;
            y1 = random(1) *   Height;
            x2 = random(1) *   Width;
            y2 = random(1) *   Height;
            DrawRect(x1, y1,   x2, y2, FillFlag);
        }

        glFinish();
    }

    /* Вызывается при изменении размеров окна */
    void Reshape(GLint w, GLint h)
    {
      Width = w;
      Height = h;

        glViewport(0, 0, w, h);

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, w, 0, h, -1.0, 1.0);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
    }

    /* Обрабатывает сообщения от мыши */
    void Mouse(int button, int state, int x, int y)
    {
      if( state == GLUT_DOWN ) {
        switch( button ) {
          case GLUT_LEFT_BUTTON:
            Seed = random(RAND_MAX);
            break;
          case GLUT_RIGHT_BUTTON:
            FillFlag = !FillFlag;
            break;
        }
        glutPostRedisplay();
      }
    }

    /* Обрабатывает сообщения от клавиатуры */
    void Keyboard( unsigned char key, int x, int y )
    {
        if( key == 27)  //ESCAPE )
            exit(0);
    }

    #pragma argsused
    int main(int argc, char* argv[])
    {
    ShowWindow(GetConsoleWindow(), SW_MINIMIZE);  //скрываем консольное окно
    SetWindowLong(GetConsoleWindow(),GWL_EXSTYLE,WS_EX_TOOLWINDOW);//убираем значек из трея

      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_RGB);
      glutInitWindowSize(Width, Height);
      glutCreateWindow("dokakodm.ucoz.ru");

        glutDisplayFunc(Display);
        glutReshapeFunc(Reshape);
        glutKeyboardFunc(Keyboard);
        glutMouseFunc(Mouse);

        glutMainLoop();
            return 0;
    }
    //---------------------------------------------------------------------------

     

    =

    =

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