Jak korzystać z graphics.h w Ubuntu?

19

Czy jest jakiś kompilator oparty na systemie Linux, który obsługuje graphics.hbibliotekę? Chcę wdrożyć programy graficzne, dlatego proszę o informację, czy istnieje takie oprogramowanie.

Jeśli nie, to jak mogę go użyć?

Atul Singh
źródło
Co dokładnie musisz wiedzieć? Kompilatory powinny znaleźć wszystkie nagłówki, jeśli umieścisz poprawne ... umm ... słuchacze w pliku źródłowym.
Braiam
@Braiam Kompilator nie znajdzie magicznie pliku nagłówka tylko dlatego, że go uwzględnisz. Po pierwsze, wyraźnie, że plik musi zostać zainstalowany w twoim systemie (zazwyczaj pliki nagłówkowe są dostarczane z *-devpakietami na dystrybucjach Linuksa) - kompilator nie pobierze go za ciebie. Po drugie, plik nagłówkowy musi znajdować się w jakiejś standardowej lokalizacji, w której kompilator będzie go szukał (np. /usr/include), Albo w tej lokalizacji należy podać za -Ipomocą wiersza poleceń (for gcclub g++). Dodatkowo zwykle potrzebujesz bibliotek środowiska uruchomieniowego na etapie łączenia (z wyjątkiem bibliotek zawierających tylko nagłówki) ...
Malte Skoruppa
@MalteSkoruppa dobrze, ale czego potrzebujesz, aby z niego skorzystać? Włóż to do swoich nagłówków, nie?
Braiam
@Braiam Err ... o co pytasz? Spójrz, pytanie OP jest po prostu następujące: co muszę zrobić, aby móc korzystać z graphic.hbiblioteki na Ubuntu? Jest całkowicie jasne. Prawidłowa odpowiedź wyjaśni, jakie pakiety są potrzebne i jak je zainstalować (tak jak istniejąca odpowiedź), a także, jakie parametry są potrzebne w wierszu poleceń w czasie kompilacji.
Malte Skoruppa
@MalteSkoruppa czytasz ciało?
Braiam

Odpowiedzi:

31

Dostępnych jest kilka opcji programowania grafiki przy użyciu Ubuntu.

Korzystanie z SDL

Jeśli chcesz korzystać graphics.hz platformy Ubuntu, musisz ją skompilować i zainstalować libgraph. Jest to implementacja interfejsu API grafiki turbo c w systemie Linux za pomocą SDL.

Nie jest bardzo wydajny i nadaje się do aplikacji o jakości produkcyjnej, ale jest prosty i łatwy w użyciu do celów uczenia się.

Możesz go pobrać stąd .

  1. Najpierw dodaj repozytorium Universe (ponieważ niektóre wymagane pakiety nie są dostępne w głównym repozytorium):

    sudo add-apt-repository universe
    sudo apt-get update
  2. Druga instalacja niezbędna do kompilacji i kilka dodatkowych pakietów:

    • W przypadku wersji wcześniejszych niż 18.04:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-1.8 \
      guile-1.8-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev build-essential
    • Dla 18.04 : Od Ubuntu 18.04 guile-2.0działa i libesd0-devjest przestarzałe. W tym celu musisz dodać repozytoria xenialw sources.list.

      sudo nano /etc/apt/sources.list

      Dodaj te linie:

      deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
      deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

      Uruchom sudo apt-get update. Następnie zainstaluj pakiety za pomocą:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-2.0 \
      guile-2.0-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev
  3. Teraz rozpakuj pobrany libgraph-1.0.2.tar.gzplik.

  4. Przejdź do wyodrębnionego folderu i uruchom następujące polecenie:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
  5. Teraz możesz używać #include<graphics.h>na Ubuntu i następującej linii w swoim programie:

    int gd=DETECT,gm; 
    initgraph(&gd,&gm,NULL);

Oto przykładowy program wykorzystujący graphics.h:

/*  demo.c */
#include <graphics.h>

int main()
{
   int gd = DETECT,gm,left=100,top=100,right=200,bottom=200,x= 300,y=150,radius=50;
   initgraph(&gd,&gm,NULL);
   rectangle(left, top, right, bottom);
   circle(x, y, radius);
   bar(left + 300, top, right + 300, bottom);
   line(left - 10, top + 150, left + 410, top + 150);
   ellipse(x, y + 200, 0, 360, 100, 50);
   outtextxy(left + 100, top + 325, "C Graphics Program");

   delay(5000);
   closegraph();
   return 0;
}
  • Aby go skompilować użyj

    gcc demo.c -o demo -lgraph
  • Aby uruchomić wpisz

    ./demo

Wyjście z wersji demonstracyjnej 1

Korzystanie z OpenGL (przez GLUT)

Chociaż OpenGL jest w zasadzie stworzony do programowania 3D, rysowanie kształtów 2D stanowi podstawowy zarys i wprowadzenie do OpenGL oraz pomysł, jak rozpocząć rysowanie obiektów w OpenGL.

  • Aby zainstalować GLUT, otwórz terminal i wpisz sudo apt-get install freeglut3-dev.
  • Oto prosty program graficzny wykorzystujący GLUT
/*  demo.c */
#include <GL/gl.h>
#include <GL/glut.h>
#include <GL/glu.h>

void setup() {   glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }

void display()
   {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glColor3f(0.0f, 0.0f, 0.0f);
      glRectf(-0.75f,0.75f, 0.75f, -0.75f);
      glutSwapBuffers();
   }

int main(int argc, char *argv[])
  {
     glutInit(&argc, argv);
     glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
     glutInitWindowSize(800,600);
     glutCreateWindow("Hello World");

     setup();
     glutDisplayFunc(display);
     glutMainLoop();
     return 0;
  }
  • Skompiluj za pomocą

    gcc demo.c -o demo -lglut -lGL

  • Uruchom za pomocą

    ./próbny

Wyjście z wersji demonstracyjnej 2

g_p
źródło
1
Używam SDL, ale zrobiłem wszystkie rzeczy, jak powiedziano, także wbudowany libgraph, ale po uruchomieniu programu zatrzymuje się i kończy nagle z błędem [xcb] Nieznany numer sekwencji podczas przetwarzania kolejki
Luzan Baral
jakiej wersji Ubuntu używasz?
g_p
Używam Ubuntu 14.04
Luzan Baral
@LuzanBaral, Wygląda na problem z GTK, ale nadal możesz uruchomić program.
g_p
1
W przypadku błędów napotkanych podczas instalowania libgraph przy użyciu SDL, odwiedź askubuntu.com/a/995265/719469 i askubuntu.com/a/717262/719469 (zaoszczędzisz dużo czasu, mówiąc to z własnego doświadczenia: P)
Kewal Shah
2

Jeśli chcesz używać graphics.h w Ubuntu lub innej dystrybucji Linuksa, wolę libxbgi. Może zrobić prawie wszystkie rzeczy, których oczekujesz od grafiki. H dla systemu Windows. Możesz go pobrać stąd: http://libxbgi.sourceforge.net/

W przeciwnym razie, jeśli chcesz zrobić wysokiej klasy grafikę, jesteś tam dla SDL (który jest głównie do programowania gier wideo) i OpenGL (który jest dla grafiki 3D). Możesz także użyć ich mieszanki. Jednym z przykładów jest brykiet gry (pisownia może być niepoprawna).

PROGRAMOWANIE SZCZĘŚLIWEJ GRAFIKI !!

Gprogrammer
źródło