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


Автор: ller 21.6.2009, 17:36
Пытаюсь выучить OpenGL. Сделал несколько примерчиков. Они компилируются, запускаются, но при включеном Compiz-е примитивы не отрисовываются, если их меньше какого то количества. Такое ощущение, что Compiz ,буферезирует вывод. Как его заставить отрисовавать содержимое окна? Использую freeGLUT из дистрибутива Fedore 10.

Автор: kemiisto 21.6.2009, 17:58
ller, я когда на Linux писал, вырубал этот Compiz к чертям собачим. Просто невозможно было с OpenGL работать. smile

P.S. Терь пишу на Mac OS X. smile Вот она счастье. Никакие эффекты отрубать не надо.

Автор: ller 21.6.2009, 19:46
Скринсэйверы все отображают правильно smile
Но там динамика, поэтому наверное и работает.
Но эффекты интересные, самое главное это перемещение окна без "хвостов" и прозрачность

Добавлено через 1 минуту и 39 секунд
Хотя еще переключатели задач удобные, и затемнение "зависшего" окна. 

Автор: Alexeis 21.6.2009, 22:20
ller, один и тот  же код перестает работать? Может ошибка есть в коде и компиз просто косвенно влияет на нее приводя к закономерным последствиям которые не были видны только по случайности.

Автор: ller 22.6.2009, 00:45
в том то и дело что код простой из учебника, узор Серпинского, при 2900 точек, они в окне появляются, ставишь 2800 чистое окно, хотя при закрытии видно, что происходит их прорисовка, и окно тут же закрывается. При отключении Compiz-а все рисуется сразу. Ощущени, что все сохраняется в буфере и не выводится....
Вот я и спрашиваю, может есть функция аналог glFlush() которая буфер выводит....

Добавлено через 1 минуту
Могу код привести, он не большой, там в основном инициализация OpenGL и прочее

Добавлено через 4 минуты и 27 секунд
Кстати при повторном вызове функции display(), которая зарегестрированна как glutDisplayFunc(display); картинка появляется...
т.е. меняю размер окна, это приводит к вызову display() и все прорисовывается, но не сразу.... smile

Добавлено через 5 минут и 7 секунд
В смысле сразу окно пустое, при изменении размеров все прорисовавается...

Автор: ller 6.7.2009, 00:33
Разобрался... Оказывается я немного того...
Был код....
Код

    glutCreateWindow("GL2");
    glutInitWindowPosition(50,50);
    glutInitWindowSize(500,500);



После того как я исправил на 
Код

    glutInitWindowPosition(50,50);
    glutInitWindowSize(500,500);
    glutCreateWindow("GL2");


все заработало, а без Compiz-a первый пример работал...  smile 
странно однако

Добавлено через 5 минут и 50 секунд
все

Автор: ller 6.7.2009, 19:54
Хотя как показали опыты этого не достаточно.
Еще необходимо
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);

И после прорисовки вызывать
glutSwapBuffers();

Правда все равно, изменение размеров окна долгое... Передвинул мышку, через 1сек изменилось окно

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