Làm cách nào để sử dụng Graphics.h trong Ubuntu?


19

Có trình biên dịch dựa trên Linux nào hỗ trợ graphics.hthư viện không? Tôi muốn triển khai các chương trình đồ họa, vì vậy xin vui lòng cho tôi biết nếu có bất kỳ phần mềm nào như vậy.

Nếu không thì làm thế nào tôi có thể sử dụng nó?


Chính xác những gì bạn cần biết? Trình biên dịch có nghĩa vụ phải tìm tất cả các tiêu đề nếu bạn đặt đúng .. umm ... trình nghe trong tệp nguồn của bạn.
Braiam

@Braiam Trình biên dịch sẽ không tìm thấy tệp tiêu đề một cách kỳ diệu chỉ vì bạn bao gồm nó. Đầu tiên, rõ ràng tệp đó cần được cài đặt trên hệ thống của bạn (thông thường các tệp tiêu đề đi kèm với *-devcác gói trên các bản phân phối Linux) - trình biên dịch sẽ không tải xuống cho bạn. Thứ hai, tệp tiêu đề đó cần phải ở một vị trí tiêu chuẩn nơi trình biên dịch sẽ tìm kiếm nó (chẳng hạn như /usr/include) hoặc nếu không thì vị trí đó phải được chỉ định -Itrên dòng lệnh (cho gcchoặc g++). Ngoài ra, bạn thường cần các lib thời gian chạy cho giai đoạn liên kết (ngoại trừ các
lib

@MalteSkoruppa tốt, nhưng bạn cần gì để sử dụng nó? Đặt nó trong tiêu đề của bạn, không?
Braiam

@Braiam Err ... bạn đang hỏi gì vậy? Hãy nhìn xem, câu hỏi của OP chỉ là thế này: tôi cần làm gì để có thể sử dụng graphic.hthư viện trên Ubuntu? Nó hoàn toàn rõ ràng. Một câu trả lời thích hợp sẽ giải thích những gói nào là cần thiết và cách cài đặt chúng (như câu trả lời hiện có) và có thể những tham số nào là cần thiết trên dòng lệnh tại thời điểm biên dịch.
Malte Skoruppa

@MalteSkoruppa bạn đang đọc cơ thể?
Braiam

Câu trả lời:


31

Có một số tùy chọn có sẵn để thực hiện lập trình đồ họa bằng Ubuntu.

Sử dụng SDL

Nếu bạn muốn sử dụng graphics.htrên nền tảng Ubuntu, bạn cần biên dịch và cài đặt libgraph. Đó là việc triển khai API đồ họa turbo c trên Linux bằng SDL.

Nó không phải là rất mạnh mẽ và phù hợp cho ứng dụng chất lượng sản xuất, nhưng nó đơn giản và dễ sử dụng cho mục đích học tập.

Bạn có thể tải nó từ đây .

  1. Trước tiên, thêm kho vũ trụ (vì một số gói bắt buộc không có sẵn trong kho chính):

    sudo add-apt-repository universe
    sudo apt-get update
  2. Cài đặt thứ hai xây dựng cần thiết và một số gói bổ sung:

    • Đối với các phiên bản trước ngày 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
    • Cho 18.04 : Từ Ubuntu 18.04 guile-2.0hoạt động và libesd0-devkhông được dùng nữa. Đối với điều này, bạn cần thêm kho lưu trữ xenialtrong sources.list.

      sudo nano /etc/apt/sources.list

      Thêm các dòng sau:

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

      Chạy đi sudo apt-get update. Sau đó cài đặt các gói bằng cách sử dụng:

      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. Bây giờ giải nén libgraph-1.0.2.tar.gztập tin tải về .

  4. Chuyển đến thư mục giải nén và chạy lệnh sau:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
  5. Bây giờ bạn có thể sử dụng #include<graphics.h>trên Ubuntu và dòng sau trong chương trình của bạn:

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

Đây là một chương trình mẫu sử dụng 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;
}
  • Để biên dịch nó sử dụng

    gcc demo.c -o demo -lgraph
  • Để chạy loại

    ./demo

Kết quả của Demo 1

Sử dụng OpenGL (thông qua GLUT)

Mặc dù OpenGL về cơ bản được tạo ra để lập trình 3D, việc vẽ các hình dạng 2D đưa ra phác thảo cơ bản và giới thiệu về OpenGL và đưa ra ý tưởng về cách bắt đầu vẽ các đối tượng trong OpenGL.

  • Để cài đặt GLUT, mở terminal và gõ sudo apt-get install freeglut3-dev .
  • Đây là một chương trình đồ họa đơn giản sử dụng 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;
  }
  • Biên dịch nó bằng cách sử dụng

    gcc demo.c -o demo -lglut -lGL

  • Chạy nó bằng

    ./bản giới thiệu

Kết quả của Demo 2


1
Tôi đang sử dụng SDL, nhưng tôi đã làm tất cả mọi thứ như đã nói, intg libg cũng vậy, nhưng sau khi chương trình chạy, nó dừng lại và kết thúc đột ngột với một lỗi [xcb] Số thứ tự không xác định trong khi xử lý hàng đợi
Luzan Baral

bạn đang sử dụng phiên bản Ubuntu nào?
g_p

tôi đang sử dụng Ubuntu 14.04
Luzan Baral

@LuzanBaral, Có vẻ như có vấn đề với GTK, nhưng bạn vẫn có thể chạy chương trình.
g_p

1
Đối với các lỗi đã xảy ra trong khi cài đặt libgraph bằng SDL, hãy tham khảo Askubfox.com/a/995265/719469Askubfox.com/a/717262/719469 (sẽ tiết kiệm rất nhiều thời gian của bạn, nói điều này bằng kinh nghiệm cá nhân: P)
Kewal Shah

2

Nếu bạn muốn sử dụng Graphics.h trong ubfox hoặc bất kỳ bản phân phối linux nào khác, thì tôi thích libxbgi hơn. Nó có thể làm hầu hết tất cả những điều bạn mong đợi từ đồ họa.h cho windows. Bạn có thể tải xuống từ đây: http://libxbgi.sourceforge.net/

Mặt khác, nếu bạn muốn làm một số đồ họa cao cấp thì bạn đã có SDL (phần lớn dành cho lập trình trò chơi video) và OpenGL (dành cho đồ họa 3D). Bạn cũng có thể sử dụng hỗn hợp của hai. Một ví dụ là trò chơi briquolo (chính tả có thể sai).

CHƯƠNG TRÌNH HẠNH PHÚC HẠNH PHÚC !!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.