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


Автор: ags 20.4.2009, 12:39
Привет!

Столкнулся с проблемой, что следующий код не перерисовывает содержимое окна при перемещении окна по десктопу.
ОС. ubuntu 8.10/freeglut 2.4

Накануне тестировал аналогичный код по win32 (vista), проблемы замечено не было (или я просто не заметил - сейчас протестировать под win32 не могу).

При изменении окна все нормально. Судя по документации glutDisplayFunc должна вызываться при перемещении окна. Однако этого не происходит:


glutDisplayFunc(myDisplay); Whenever the system determines that a window needs to be redraw
the function myDisplay is called. This will happen when the window is created and every time the
window is moved or corrupted.


Ниже приведен код... Может кто-нибудь подскажет, где собака порылась?

Код

#include <GL/glut.h>
#include <iostream>

using namespace std;


void displayFunction()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1., 0.f, 0.f);
    glRectf(-25.f, 25.f, 25.f, -25.f);
    glFlush();
}

void changeSize(GLsizei width, GLsizei height)
{
    glViewport(0, 0, width, height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glOrtho(-100.f, 100.f, -100.f, 100.f, 1.f, -1.f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

/**
 * Application main initialization.
 */
void initializeApplication(int *pargc, char **argv)
{
    glutInit(pargc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    glutCreateWindow("OpenGL");
    glClearColor(0.f, 0.f, 1.f, 1.f);
}

void bindCallbackFunction(int *pargc, char **argv)
{
    glutDisplayFunc(displayFunction);
    glutReshapeFunc(changeSize);
}

int main(int argc, char **argv)
{
    initializeApplication(&argc, argv);
    bindCallbackFunction(&argc, argv);

    cout << "OpenGL appliacation is now running." << endl;
    glutMainLoop();
}



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