Perl + Opengl

Тема в разделе "Perl программирование", создана пользователем DarkPerl, 25 авг 2011.

  1. DarkPerl

    DarkPerl New Member

    Регистрация:
    24 авг 2011
    Сообщения:
    3
    Симпатии:
    0
    Доброго времени суток!

    Сегодня решил заняться программированием на языке Perl, используя библиотеку OpenGL :newconfus:

    Возникли вопросы:

    Есть два файла:
    1 - main.pl
    2 - point.pm

    В первом файле (main.pl) подключаю второй файл (point.pm) как модуль, например. Пока обойдёмся без ООП, ограничимся модульным вариантом, чтобы каши так сказать не было B)

    Код файла main.pl:
    #!/usr/bin/perl

    use strict;
    use warnings;

    use lib 'D:/work/perl/project/modules'; # Путь к папке с модулями
    use OpenGL qw/:all/;
    use point; # файл с описанием функции рисования точки

    my $title = 'Заголовок окна';
    my $winw_pos = 0; my $winh_pos = 0; # Позиция окна
    my $win_w = 640; my $win_h = 480; # Размеры окна

    # Код для рисования сцены
    sub draw()
    {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(1.0, 1.0, 1.0, 0.0);

    draw_point; # Функция для рисования точки. (описана в файле point.pm)
    glutSwapBuffers();
    }

    # Инициализация
    sub main()
    {
    glutInit();
    glutDisplayFunc(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowPosition("$winw_pos", "$winh_pos");
    glutInitWindowSize("$win_w", "$win_h");
    glutCreateWindow("$title");
    glutDisplayFunc(\&draw);
    glutMainLoop();
    }

    main;

    Код файла point.pm:
    package point;

    use Exporter;
    @ISA = qw(Exporter);
    @EXPORT = qw(&draw_point);

    sub test() { print "Все ок!\n"; }

    # функция рисования точки
    sub draw_point()
    {
    glColor3f(1.0, 0.0, 0.0);
    glPointSize(5.0);
    glBegin(GL_POINTS);
    glVertex3f(0.0, 0.0, 0.0);
    glEnd();
    }

    return 1;

    При запуске файла main.pl получаем ошибку:
    Undefined subroutine &point::glColor3f called at D:/work/perl/project/modules/point.pm line 18.

    Другими словами, он не находит определение фунции glColor3f в модуле point.pm...

    И так, в чем собственно вопрос...

    Если подключить библиотеку OpenGL в файле point.pm то всё работает!
    Но получается, как я понимаю, повторное подключение OpenGL библиотеки!!!
    Я ведь уже подключил её в main.pl :confused:

    Подскажите, знающие люди, как обойти данное недоразумение??? Или же я чего то не понимаю!?

    То есть, как один раз подключить библиотеку в главном файле *.pl и не подключать её повторно в модулях *.pm ???
     
  2. ProFTP

    ProFTP Member

    Регистрация:
    20 ноя 2011
    Сообщения:
    6
    Симпатии:
    0
    <!--shcode--><pre><code class='perl'>use OpenGL[/CODE]

    use - загружает только при компиляции в самом начале запуска perl'а, повторно при use вызываемый модуль не компилируется
     
Загрузка...
Похожие Темы - Perl Opengl
  1. Anna_Kashina
    Ответов:
    0
    Просмотров:
    137
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    409
  3. SvetlanaL
    Ответов:
    0
    Просмотров:
    424
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    504
  5. SvetlanaL
    Ответов:
    0
    Просмотров:
    606

Поделиться этой страницей