FP и рисование в графическом режиме (Linux)

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

lillgrinn
новенький
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

FP и рисование в графическом режиме (Linux)

Сообщение lillgrinn »

Как работать в графическом режиме?

Среда IDE - Geany. При компиляции выходит ошибка:

Код: Выделить всё

/usr/bin/ld: cannot find -lvga


В Linux я новичок, поэтому не знаю как бытьв этой ситуации.
Версия Linux: Xubuntu 7.04
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

попробуй

Код: Выделить всё

apt-cache search vga | grep lib

и ставишь пакеты начинающие на lib и кончающиеся на dev
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

В Линуксе несколько типов графических библиотек и ещё XOrg.

VGALib, SVGALib, Frame Buffer, ... XOrg стоит особняком но он тоже
по сути библиотека, только продвинутая. Все они обращаются
напрямую к аппаратуре.

Есть ещё надстройки над несколькими такими сразу для унификации,
например SDL. Они не обращаютя напрямую.

Какого рода задачу нужно решить ?
lillgrinn
новенький
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

Сообщение lillgrinn »

Надо в рамках школьного курса работать с графикой в Pascal (построение простейших рисунков).
Аватара пользователя
bw
постоялец
Сообщения: 359
Зарегистрирован: 01.12.2005 10:36:23
Откуда: Усть-Илимск
Контактная информация:

Сообщение bw »

Рисунков? Наверное графиков? Ну тогда стандартного модуля Graphic хватит. Судя по ошибке, о которой сообщает линковщик, нехватает статической библиотеки libvga.a. Как её установить тебе объяснили. Так же можешь использовать aptitude или synaptic для установки пакетов, если они есть в твоём дистрибутиве.

..bw
lillgrinn
новенький
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

Сообщение lillgrinn »

При запуске выходит ошибка:

Код: Выделить всё

svgalib: Cannot get I/O permission.

Это что, под root ее надо запускать что ли?
Программа (взято из примера):

Код: Выделить всё

Program inigraph1;

{ Program to demonstrate static graphics mode selection }

uses graph;


const
  TheLine = 'We are now in 640 x 480 x 256 colors!'+
            ' (press <Return> to continue)';

var
  gd, gm, lo, hi, error,tw,th: integer;
  found: boolean;

begin
  { We want an 8 bit mode }
  gd := D8bit;
  gm := m640x480;
  initgraph(gd,gm,'');
  { Make sure you always check graphresult! }
  error := graphResult;
  if (error <> grOk) Then
    begin
    writeln('640x480x256 is not supported!');
    halt(1)
    end;
  { We are now in 640x480x256 }
  setColor(cyan);
  rectangle(0,0,getmaxx,getmaxy);
  { Write a nice message in the center of the screen }
  setTextStyle(defaultFont,horizDir,1);
  tw:=TextWidth(TheLine);
  th:=TextHeight(TheLine);
  outTextXY((getMaxX - TW) div 2,
            (getMaxY - TH) div 2,TheLine);
  { Wait for return }
  readln;
  { Back to text mode }
  closegraph;
end.
Последний раз редактировалось lillgrinn 15.10.2007 11:49:15, всего редактировалось 1 раз.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Попробуй. Если запустится будем думать о правах.
lillgrinn
новенький
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

Сообщение lillgrinn »

Alexander писал(а):Попробуй. Если запустится будем думать о правах.

С правами root - заработала, Однако это не выход.
Что же мне, учеников под root в систему пускать?
Аватара пользователя
bw
постоялец
Сообщения: 359
Зарегистрирован: 01.12.2005 10:36:23
Откуда: Усть-Илимск
Контактная информация:

Сообщение bw »

Учи их работать в X и/или Gtk+/Qt :-).

..bw
lillgrinn
новенький
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

Сообщение lillgrinn »

Наверное переключение в полноэкранный режим требует привелегии root.
Тогда может быть кто-нибудь подскажет другой способ работать с выводом графики? Пусть не в полноэкранном режиме, а в оконном, т.е. перенаправление вывода на новое окно и в нем отображать график функции или какой-нибудь другой рисуно. построенный при помощи линй и т.п.
lillgrinn
новенький
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

Сообщение lillgrinn »

bw писал(а):Учи их работать в X и/или Gtk+/Qt :-).

..bw

А по подробнее можно? Мне собственно надо бы и самому хотя бы разобраться, прежде чем что-то ученикам показывать.
Аватара пользователя
bw
постоялец
Сообщения: 359
Зарегистрирован: 01.12.2005 10:36:23
Откуда: Усть-Илимск
Контактная информация:

Сообщение bw »

Набери в google: freepascal x

..bw
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

lillgrinn
лучше ну бубунту форум или иркканал вылезь, тебе скажут куда копать, может где права сильно урезал.
Аватара пользователя
noch
постоялец
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia
Контактная информация:

Сообщение noch »

не хочу расстраивать, попробуйте покопаться, но
"Detailed answer: SVGAlib accesses the video card directly. In order to
access a piece of hardware directly, you must be root, or else setuid
root"
я вижу такой выход - портировать wingraph на linux или где ни-будь найти модуль подобный graph-у для linux-a.
Потому что canvas использовать не актуально для детей.
Хотя задачка сложная, сам не знаю что делать - может судо покрутить?
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

lillgrinn писал(а): Пусть не в полноэкранном режиме, а в оконном, т.е.


То есть? Иксы запускать в принцепе можно ? Тогда вообще не вопрос.

А без них наверное нужно сделать клиент-серверную штуку.
Чтобы построение в виде команд (или графики) отсылалось
на сервер-демон. Им может быть и какой нибудь вьювер графики
(посмотри в менеджере пакетов) сьюднутый по руту.

Да, блин, загвоздка с рутом получается.
Ответить