Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2015, 18:48   #1
WolfMan96
Новичок
Джуниор
 
Регистрация: 26.02.2015
Сообщений: 2
По умолчанию OpenGL неправильно работает glutReshapeFunc

Добрый день. Помогите разобраться с проблемой. Функция Reshape работает неправильно. При увеличении размера окна активная область остается того же размера, что и была, а всё остальное - чёрный фон.

Код:
void Reshape(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, w, 0, h);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
 
Particle Particling;
Molecule Moleculing;
 
void Timer(int value)
{
    for (int i = 0; i < settings.n; i++)
    {
        Particling.MoveParticle(i);
    }
    for (int i = 0; i < settings.l; i++)
    {
        Moleculing.MoveMolecule(i);
    }
    
    for (int i = 0; i < settings.n; i++)
    {
        for (int j = 0; j < settings.n; j++)
        {
            if (i != j)
            {
                Particling.CrashParticle(i, j);
            }
        }
    }
    
    for (int i = 0; i < settings.n; i++)
    {
        for (int j = 0; j < settings.l; j++)
        {
            Particling.CrashParticleMolecule(i, j);
        }
    }
    
    for (int i = 0; i < settings.l; i++)
    {
        for (int j = 0; j < settings.l; j++)
        {
            if (i != j)
            {
                Moleculing.CrashMolecule(i, j);
            }
        }
    }
    
    glutPostRedisplay();
    glutTimerFunc(settings.delay, Timer, 0);
}
 
void Draw()
{
    glClear(GL_COLOR_BUFFER_BIT);
    for (int i = 0; i < settings.n; i++)
    {
        Particling.DrawParticle(i);
    }
 
    for (int i = 0; i < settings.l; i++)
    {
        Moleculing.DrawMolecule(i);
    }
    glFlush();
    glutSwapBuffers();
}
 
int main(int argc, char **argv)
{
    setlocale(LC_ALL, "Russian");
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(settings.WinWid, settings.WinHei);
    glutInitWindowPosition(settings.WinPosX, settings.WinPosY);
    glutCreateWindow("Brownian motion");
    glClearColor(0, 0, 0, 1.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, settings.WinWid, settings.WinHei, 0, -1, 1);
    glutDisplayFunc(Draw);
    glutTimerFunc(settings.delay, Timer, 0);
    glutReshapeFunc(Reshape);
    glutMainLoop();
    return 0;
}
Проблема решена

Последний раз редактировалось WolfMan96; 28.06.2015 в 01:05.
WolfMan96 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильно работает таймер Юшков Компоненты Delphi 9 07.11.2011 14:42
неправильно работает сортировка Brabus Помощь студентам 1 30.05.2010 14:25
sscanf() неправильно работает BioS Общие вопросы C/C++ 7 06.02.2010 22:36
Неправильно работает WinExec? TwiX Общие вопросы Delphi 2 26.11.2009 21:07
Запрос неправильно работает... yulia БД в Delphi 0 27.05.2007 20:41