Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятности с OpenGL 
V
    Опции темы
Cheloveck
Дата 14.6.2010, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 2
Всего: 32



Не знаю, в каком разделе написать, напишу тут.
В общем, решил поизучать OpenGL. Обложился статьями, книгами. В частности этим переводом статей с этого сайта. 
Беру любой пример, например этот, компилирую, запускаю, и 70% CPU отъедается. 

Давал скомпилированный бинарник двум людям. У одного Gentoo с ATI'шной картоочкой - 87%, а у другого debian lenny c intel'овской интегрированной картой на ноуте - 1%. То есть, из этого можно сделать два вывода:
  • Пример работает
  • Проблема носит массовый характер
Кроме того, на Java с использованием JOGL, как написано тут та же самая история.
 Интересно, что все примеры из Qt занимают не более 3%.

Пробовал две видеокарты GeForce 6600 и GeForce 8600GT . Драйверы официальные, последней версии.  ОС Debian Squeeze.
Файл xorg.conf, будь то мой личный или сгенерированный инсталятором дров NVIDIA не влияет на результат. Вот, что генерирует инсталлер
Код

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 1.0  (buildmeister@builder75)  Wed Jun  2 00:20:35 PDT 2010

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"                                                                                                                                 
    Driver         "nvidia"                                                                                                                                  
    VendorName     "NVIDIA Corporation"                                                                                                                      
EndSection                                                                                                                                                   
                                                                                                                                                             
Section "Screen"                                                                                                                                             
    Identifier     "Screen0"                                                                                                                                 
    Device         "Device0"                                                                                                                                 
    Monitor        "Monitor0"                                                                                                                                
    DefaultDepth    24                                                                                                                                       
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


GLUT представлен пакетами freeglut3 и freeglut3-dev. Установка или удаление mesa дело не изменяет. OpenGL устанавливается вместе с дровами NVIDIA.

У меня больше нет мыслей, куда капать?

PS все примеры под M$ Windows работают нормально.

Это сообщение отредактировал(а) Cheloveck - 14.6.2010, 18:08


--------------------
user posted image
PM Jabber   Вверх
Cheloveck
Дата 15.6.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 2
Всего: 32



Раскуривание OpenGL дальше привело к, как мне кажется, ответу, во всём виновата обработка событий Idle. Если сделать как-то так
Код

void Timer(bool start)
{
    static struct timeval tv_begin;
    if(start)
        gettimeofday(&tv_begin, 0);
    else
    {
        struct timeval tv_end;
        gettimeofday(&tv_end, 0);

        if(tv_begin.tv_sec == tv_end.tv_sec)
        {
            time_t diff = 40000 - (tv_end.tv_usec - tv_begin.tv_usec);
            if(diff > 0)
            {
                timespec ts = { 0, diff * 1000 };
                nanosleep(&ts, 0);
            }
        }
    }
}

void DisplayHandler()
{
    Timer(true);

    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex2f(0.0, 1.0);
    glVertex2f(1.0, -1.0);
    glVertex2f(-1.0, -1.0);
    glEnd();

    glutSwapBuffers();

    Timer(false);
}

то всё становится на круги своя.
PS этот код ограничивает количество кадров до 25-ти в секунду

Это сообщение отредактировал(а) Cheloveck - 15.6.2010, 21:25


--------------------
user posted image
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0710 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.