1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn chủ đề đồ họa trong lập trình c

24 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

2 Lời Mở Đầu Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trê

Trang 1

Đại Học Bách Khoa Hà Nội Khoa Toán Ứng Dụn và Tin Họcg

BÁO CÁO BÀI TẬP LỚN Môn học: Kỹ Thuật Lập Trình Chủ đề : Đồ Họa Trong Lập Trình C

Giáo viên hướng dẫn: Nguyễn Thị Thanh Huyền Sinh viên thực hiện: Hoàng Thái Duy

Mã sinh viên: 20227224

Hà Nội, ngày 5/16/2024

Trang 2

2

Lời Mở Đầu

Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về cơ sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trên màn hình máy tính Về bản chất: đó là một quá trình xây dựng và phát triển các công cụ trên cả hai lĩnh vực phần cứng và phần mềm hỗ trợ cho các lập trình viên thiết kế các chương trình có khả năng đồ họa cao Việc mô tả dữ liệu thông qua các hình ảnh và màu sắc đa dạng của nó, các chương trình đồ họa thường thu hút người sử dụng bởi tính thân thiện, dễ dùng,… kích thích khả năng sáng tạo và nâng cao năng suất làm việc Do vậy, đồ họa máy tính được ứng dụng trong nhiều lĩnh vực: giáo dục, thương mại… Là sinh viên được tìm hiểu và làm quen với một số kĩ thuật đồ họa trên máy tính thông qua tài liệu, bài giảng do cô Nguyễn Thị Thanh Huyền giáo viên giảng dạy Với những - kiến thức đã học em đã quyết định chọn đề tài: Đồ Họa Trong Lập Trình C

Trang 3

3

Mục Lục

Phần I: Giới Thiệu 4

I.1 Mục Đích và Ý Nghĩa Của Báo Cáo 4

I.2 Tầm Quan Trọng Của Đồ Họa Trong Lập Trình C 4

I.3 Ngôn Ngữ C và Đồ Họa 5

I.4 Kết Luận 5

Phần II: Tổng Quan Đồ Họa Máy Tính 6

II.1 Khái Niệm và Phân loại Đồ Họa Máy Tính 6

II.2 Đồ Họa 2D (Two-Dimensional Graphics): 6

II.3 Đồ Họa 3D (Three-Dimensional Graphics): 6

II.4 Các Thành Phần Cơ Bản Của Hệ Thống Đồ Họa Máy Tính 6

II.5 Các Kỹ Thuật và Công Nghệ Đồ Họa 7

Phần III: Các Thư Viện Đồ Họa Trong C 9

III.1 Thư viện ‘graphics.h’ 9

III.2 OpenGL 12

Phần IV: So Sánh Các Thư Viện Đồ Họa Graphic.h và OpenGL 17

IV.1 Mức Độ Phức Tạp 17

IV.2 Khả Năng Tương Thích 17

IV.3 Hiệu Suất 18

IV.4 Tính Linh Hoạt và Khả Năng Mở Rộng 19

Phần V: Ứng Dụng Của Đồ Họa Trong C 20

Trang 4

4

Phần I: Giới Thiệu

Đồ họa máy tính đã trở thành một phần không thể thiếu trong nhiều lĩnh vực khác nhau như giải trí, giáo dục, y tế, thiết kế và khoa học kỹ thuật Khả năng tạo ra các hình ảnh đẹp mắt và trực quan không chỉ giúp cải thiện trải nghiệm người dùng mà còn đóng vai trò quan trọng trong việc truyền đạt thông tin một cách hiệu quả Ngôn ngữ lập trình C, mặc dù được ra đời từ những năm 1970, vẫn là một trong những ngôn ngữ phổ biến và mạnh mẽ nhất nhờ vào tính đơn giản, hiệu suất cao và khả năng tiếp cận trực tiếp với phần cứng

I.1 Mục Đích và Ý Nghĩa Của Báo Cáo

• Báo cáo này nhằm cung cấp một cái nhìn tổng quan về việc sử dụng đồ họa trong ngôn ngữ lập trình C, giới thiệu các thư viện đồ họa phổ biến, so sánh chúng và đánh giá ứng dụng của chúng trong các lĩnh vực khác nhau Qua đó, giúp người đọc hiểu rõ hơn về các công cụ và kỹ thuật hiện có, cũng như cách lựa chọn thư viện phù hợp cho từng loại dự án

I.2 Tầm Quan Trọng Của Đồ Họa Trong Lập Trình C

Phát Triển Game: Đồ họa là một yếu tố không thể thiếu trong phát

triển game Các trò chơi từ đơn giản đến phức tạp đều yêu cầu các hình ảnh, hiệu ứng và giao diện đồ họa để thu hút người chơi và mang lại trải nghiệm tốt nhất

Mô Phỏng và Mô Hình Hóa: Trong các ngành công nghiệp như kỹ

thuật, y học và khoa học, đồ họa được sử dụng để tạo ra các mô phỏng và mô hình hóa phức tạp, giúp các nhà nghiên cứu và kỹ sư hiểu rõ hơn về các hiện tượng và quy trình

Thiết kế và Sáng Tạo: Các ứng dụng đồ họa như thiết kế đồ họa, tạo

hình ảnh 2D/3D, và thiết kế giao diện người dùng đều cần đến các thư viện đồ họa mạnh mẽ và linh hoạt

Trang 5

5

Giáo Dục và Học Tập: Đồ họa giúp các học viên và sinh viên dễ dàng

hình dung và hiểu các khái niệm phức tạp thông qua các hình ảnh minh họa, biểu đồ và mô phỏng trực quan

Giáo Dục và Học Tập: Đồ họa giúp các học viên và sinh viên dễ dàng

hình dung và hiểu các khái niệm phức tạp thông qua các hình ảnh minh họa, biểu đồ và mô phỏng trực quan

I.3 Ngôn Ngữ C và Đồ Họa

• Ngôn ngữ C nổi bật với hiệu suất cao và khả năng tiếp cận gần với phần cứng, là sự lựa chọn lý tưởng cho các ứng dụng yêu cầu hiệu suất cao như đồ họa Tuy nhiên, việc lập trình đồ họa trực tiếp bằng C không phải lúc nào cũng dễ dàng, do đó các thư viện đồ họa đã ra đời để giúp đơn giản hóa quá trình này

• Báo cáo này sẽ xem xét một số thư viện đồ họa nổi bật cho ngôn ngữ C, bao gồm graphics.h, SDL, OpenGL, Allegro, Cairo và SFML Mỗi thư viện sẽ được giới thiệu về các tính năng, ưu điểm, nhược điểm và các ứng dụng thực tế, giúp người đọc có cái nhìn tổng quan và lựa chọn công cụ phù hợp nhất cho dự án của mình

I.4 Kết Luận

Qua báo cáo này, người đọc sẽ nắm bắt được những kiến thức cơ bản và chuyên sâu về lập trình đồ họa trong C, từ đó có thể áp dụng vào các dự án cụ thể của mình, nâng cao hiệu suất và chất lượng sản phẩm

Trang 6

6

II.1 Khái Niệm và Phân loại Đồ Họa Máy Tính

Đồ họa máy tính là lĩnh vực nghiên cứu và phát triển liên quan đến việc tạo ra, xử lý và thao tác các hình ảnh bằng máy tính Đồ họa máy tính có thể được phân loại thành hai lĩnh vực chính: đồ họa 2D và đồ họa 3D

II.2 Đồ Họa 2D (Two-Dimensional Graphics):

Khái niệm: Đồ họa 2D bao gồm các hình ảnh và hình vẽ nằm trên

một mặt phẳng hai chiều Các đối tượng trong đồ họa 2D thường được biểu diễn bằng các điểm, đường thẳng, hình chữ nhật, hình tròn, và các hình dạng đa giác khác

Ứng dụng: Đồ họa 2D được sử dụng rộng rãi trong thiết kế giao

diện người dùng, trình chiếu, biểu đồ, hoạt hình 2D và các trò chơi điện tử 2D

II.3 Đồ Họa 3D (Three-Dimensional Graphics):

Khái niệm: Đồ họa 3D liên quan đến việc tạo ra các hình ảnh có

chiều sâu, giúp mô phỏng không gian ba chiều thực tế Các đối tượng trong đồ họa 3D được biểu diễn bằng các mô hình đa giác (polygons) và các kỹ thuật chiếu sáng, đổ bóng để tạo ra hiệu ứng chân thực

Ứng dụng: Đồ họa 3D được sử dụng trong các lĩnh vực như thiết

kế kiến trúc, kỹ thuật, mô phỏng y khoa, hoạt hình 3D, và các trò chơi điện tử 3D

II.4 Các Thành Phần Cơ Bản Của Hệ Thống Đồ Họa Máy

Tính

a Phần Cứng Đồ Họa (Graphics Hardware):

• GPU (Graphics Processing Unit): GPU là bộ xử lý chuyên dụng được tối ưu hóa cho việc thực hiện các phép tính đồ họa phức tạp Nó giúp tăng tốc quá trình xử lý hình ảnh, video và mô phỏng 3D

Trang 7

7

• Màn Hình (Monitor): Màn hình là thiết bị đầu ra hiển thị hình ảnh đồ họa Các loại màn hình phổ biến bao gồm LCD, LED, và OLED

b Phần Mềm Đồ Họa (Graphics Software):

Thư Viện Đồ Họa (Graphics Libraries): Các thư viện đồ họa

cung cấp các hàm và công cụ để lập trình viên có thể dễ dàng tạo ra các hình ảnh đồ họa Các thư viện phổ biến bao gồm OpenGL, DirectX, SDL, và ‘graphics.h’

Ứng Dụng Đồ Họa (Graphics Applications): Các phần mềm như

Adobe Photoshop, Autodesk Maya, Blender, và Unity cho phép người dùng tạo và chỉnh sửa các hình ảnh đồ họa phức tạp

II.5 Các Kỹ Thuật và Công Nghệ Đồ Họa

a Raster Graphics và Vector Graphics:

• Raster Graphics: Còn được gọi là đồ họa điểm ảnh (bitmap graphics), bao gồm các hình ảnh được tạo thành từ lưới các điểm ảnh (pixels) Mỗi điểm ảnh có một màu sắc xác định, và toàn bộ hình ảnh được lưu trữ dưới dạng mảng các điểm ảnh

• Vector Graphics: Đồ họa vector sử dụng các đối tượng hình học như đường thẳng, đường cong, và hình đa giác để biểu diễn hình ảnh Đồ họa vector có thể được phóng to hoặc thu nhỏ mà không làm mất chất lượng

b Kỹ Thuật Chiếu Sáng và Đổ Bóng

(Lighting and Shading Techniques)

• Phong Shading: Một kỹ thuật đổ bóng giúp tạo ra các hiệu ứng ánh sáng mượt mà trên bề mặt của đối tượng 3D

• Gouraud Shading: Kỹ thuật này tính toán ánh sáng tại các đỉnh của đa giác và sau đó nội suy giá trị ánh sáng cho các điểm trong nội bộ đa giác

c Mô Hình Hóa 3D (3D Modeling)

Trang 8

d Kỹ Thuật Kết Xuất (Rendering Techniques)

• Ray Tracing: Tạo ra các hiệu ứng ánh sáng và bóng

• Rasterization: Chuyển đổi các đối tượng hình học 3D thành các điểm ảnh 2D

Trang 9

9

Phần III: Các Thư Viện Đồ Họa Trong C

III.1 Thư viện ‘graphics.h’• Giới Thiệu

o Thư viện graphics.h là một thư viện đồ họa cổ điển, ban đầu được phát triển cho trình biên dịch Borland Turbo C/C++ trên hệ điều hành DOS

o Mặc dù đã không còn được sử dụng rộng rãi trên các hệ điều hành hiện đại, graphics.h vẫn giữ một vai trò quan trọng trong việc dạy và học lập trình đồ họa cơ bản

• Tính Năng Chính:

Thư viện graphics.h cung cấp một số hàm cơ bản để tạo ra các hình ảnh đồ họa 2D Dưới đây là một số tính năng chính của thư viện này:

o Vẽ các hình dạng cơ bản: graphics.h hỗ trợ các hàm để vẽ các hình dạng cơ bản như đường thẳng, hình chữ nhật, hình tròn, hình ellipse và đa giác

o Màu sắc: Cho phép thiết lập và sử dụng các màu sắc khác

nhau để vẽ các đối tượng đồ họa

Chữ viết: Hỗ trợ các hàm để vẽ văn bản trên màn hình đồ họa với

các phông chữ và kích thước khác nhau

Các hàm tiện ích: Cung cấp các hàm để khởi tạo và đóng chế độ

đồ họa, cũng như quản lý các sự kiện đầu vào đơn giản

• Các Hàm Cơ bản trong thư viện graphics:

o Khởi Tạo và Đóng Đồ Họa:

▪ Initgraph: Khởi tạo chế độ đồ họa ▪ Closegraph: Đóng chế độ đồ họa o Vẽ Các Hình Dạng Cơ Bản:

▪ line: Vẽ một đường thẳng giữa hai điểm ▪ rectangle: Vẽ một hình chữ nhật

Trang 10

10

▪ circle: Vẽ một hình tròn ▪ ellipse: Vẽ một hình ellipse o Thao Tác Với Màu Sắc:

▪ setcolor: Đặt màu cho các hình vẽ

▪ setbkcolor: Đặt màu nền cho màn hình đồ họa ▪ setfillstyle: Đặt kiểu và màu để tô đầy các hình dạng o Hiển Thị Văn Bản:

▪ outtext: Hiển thị một chuỗi văn bản tại vị trí hiện tại ▪ outtextxy: Hiển thị một chuỗi văn bản tại vị trí cụ thể o Thao Tác Với Hình Ảnh:

▪ putpixel: Đặt một điểm ảnh tại vị trí cụ thể.▪ getimage: Lấy hình ảnh từ màn hình đồ họa ▪ putimage: Đặt hình ảnh lên màn hình đồ họa o Thao Tác Với Ảnh Bitmap:

▪ readimagefile: Đọc một tệp hình ảnh và hiển thị nó trên màn hình

▪ putimage: Đặt hình ảnh đã lưu trữ trước đó lên màn hình

o Thao Tác Với Pixel:

▪ getpixel: Lấy màu của một điểm ảnh tại vị trí cụ thể o Thao Tác Khác:

▪ delay: Tạm dừng chương trình trong khoảng thời gian xác định (mili giây)

Trang 11

o Tài liệu và nguồn tài nguyên phong phú: Vì đã tồn tại từ lâu, graphics.h có rất nhiều tài liệu và ví dụ trực tuyến, giúp người học dễ dàng tiếp cận và tìm hiểu

• Nhược Điểm:

o Tương thích hạn chế: graphics.h được thiết kế cho hệ điều

hành DOS và trình biên dịch Turbo C/C++ Điều này làm cho nó khó sử dụng trên các hệ điều hành hiện đại như Windows, macOS, và Linux

o Hiệu suất và tính năng hạn chế: So với các thư viện đồ họa

hiện đại như SDL OpenGL, , hoặc SFML, graphics.h có hiệu suất thấp hơn và thiếu nhiều tính năng nâng cao

o Phụ thuộc vào môi trường cũ: Để sử dụng graphics.h trên

các hệ điều hành hiện đại, người dùng thường phải sử dụng

Trang 12

12

các môi trường giả lập như DOSBox hoặc các phiên bản cập nhật của thư viện như WinBGIm

• Cài Đặt và Sử Dụng graphics.h Trên Hệ Điều Hành Hiện Đại:

(Text editor: Visual Studio Code) o Download tệp zip của WinBGIm

o Giải nén các tệp ‘winbgim.h’ ‘graphics.h’, , và ‘libbgi.a’ vào thư mục thích hợp

o Chạy chương trình thêm các tham số “lbgi lgdi32

-lcomdlg32 -luuid -loleaut32 -lole32” giúp trình biên dịch tìm

thấy các định nghĩa hàm trong các tệp thư viện tương ứng

• Kết Luận

Thư viện ‘graphics.h’ tuy đã lỗi thời nhưng vẫn là một công cụ

hữu ích cho việc học lập trình đồ họa cơ bản Đối với các dự án đồ họa phức tạp hơn hoặc yêu cầu hiệu suất cao trên các hệ điều hành hiện đại, lập trình viên nên xem xét các thư viện đồ họa tiên tiến hơn như SDL OpenGL, , hoặc SFML Tuy nhiên, graphics.h vẫn là một điểm khởi đầu tốt cho những ai mới làm quen với lập trình đồ họa

III.2 OpenGL

• Giới thiệu

o OpenGL (Open Graphics Library) là một API tiêu chuẩn và phổ biến để lập trình đồ họa 2D và 3D Được phát triển vào đầu những năm 1990, OpenGL đã trở thành nền tảng cho nhiều ứng dụng đồ họa chuyên nghiệp, từ trò chơi điện tử đến phần mềm mô phỏng và thiết kế kỹ thuật OpenGL là một API độc lập với nền tảng, hỗ trợ trên nhiều hệ điều hành bao gồm Windows, macOS, Linux và các hệ điều hành di động

• Tính Năng Chính

OpenGL cung cấp một loạt các tính năng mạnh mẽ cho lập trình đồ họa:

Trang 13

13

o Đồ họa 3D: Cung cấp các hàm để tạo và quản lý các đối tượng

3D phức tạp, bao gồm các phép biến hình, chiếu sáng, và kết cấu

o Đồ họa 2D: Mặc dù mạnh mẽ với đồ họa 3D, OpenGL cũng

hỗ trợ đầy đủ các hàm để vẽ các hình ảnh 2D

o Khả năng mở rộng: Hỗ trợ các tiện ích mở rộng cho phép các

nhà phát triển sử dụng các tính năng mới nhất của phần cứng đồ họa

o Tương thích với nhiều ngôn ngữ lập trình: Có thể được sử

dụng với C, C++, Python, Java, và nhiều ngôn ngữ lập trình khác thông qua các binding (liên kết)

o Hỗ trợ bởi phần cứng: Tận dụng tối đa sức mạnh của GPU để

tăng hiệu suất đồ họa

• Các Hàm Cơ Bản Trong Thư Viện GLEW (OpenGL Extension

Wrangler Library) và GLFW (Graphics Library Framework)

o Khởi Tạo và Thiết Lập

▪ glfwInit: Khởi tạo thư viện GLFW

▪ glfwCreateWindow: Tạo một cửa sổ hiển thị ▪ glewInit: Khởi tạo GLEW sau khi tạo ngữ cảnh

o Thiết Lập Bộ Đệm Khung (Frame Buffer)

▪ glfwSwapBuffers: Hoán đổi bộ đệm khung, cập nhật màn hình với những gì đã vẽ

Trang 14

▪ glCreateShader: Tạo một shader mới ▪ glShaderSource: Nạp mã nguồn cho shader ▪ glCompileShader: Biên dịch shader

▪ glCreateProgram: Tạo một chương trình shader ▪ glAttachShader: Gắn shader vào chương trình ▪ glLinkProgram: Liên kết chương trình shader ▪ glUseProgram: Sử dụng chương trình shader

Trang 15

15

• Ưu Điểm

o Hiệu suất cao: OpenGL tận dụng tối đa sức mạnh của GPU,

cho phép thực hiện các phép toán đồ họa phức tạp một cách nhanh chóng và hiệu quả

o Đa nền tảng: Hỗ trợ trên nhiều hệ điều hành và nền tảng phần

cứng

Trang 16

16

o Cộng đồng lớn và hỗ trợ tốt: Với một cộng đồng lớn các nhà

phát triển và tài liệu phong phú, dễ dàng tìm kiếm sự hỗ trợ và các tài nguyên học tập

o Mở rộng và tương thích ngược: Các phiên bản mới của

OpenGL thường giữ tính tương thích ngược, giúp các ứng dụng cũ vẫn có thể hoạt động trên phần cứng mới

• Nhược Điểm

o Độ phức tạp cao: Đối với những người mới bắt đầu, OpenGL

có thể khá phức tạp và khó học do số lượng lớn các hàm và khái niệm liên quan

o Không hỗ trợ các tính năng cấp cao: OpenGL cung cấp các

công cụ ở mức độ thấp, nghĩa là bạn cần tự xây dựng nhiều tính năng cao cấp như quản lý tài nguyên, tải mô hình, và xử lý ánh sáng phức tạp

o Sự phân mảnh: Mặc dù OpenGL là tiêu chuẩn, sự khác biệt

trong việc triển khai giữa các nhà cung cấp phần cứng đôi khi dẫn đến các vấn đề tương thích và hiệu suất không đồng nhất

• Kết Luận

OpenGL là một công cụ mạnh mẽ và linh hoạt cho việc phát triển đồ họa máy tính, đặc biệt là đồ họa 3D Mặc dù yêu cầu kiến thức và kỹ năng lập trình đồ họa cao, OpenGL cung cấp hiệu suất và khả năng tùy biến mạnh mẽ, là lựa chọn hàng đầu cho các ứng dụng đòi hỏi đồ họa phức tạp và chất lượng cao Bằng cách sử dụng kết hợp với các thư viện hỗ trợ như GLUT, GLFW, hoặc SDL, các nhà phát triển có thể tạo ra các ứng dụng đồ họa mạnh mẽ và đa nền tảng

Trang 17

IV.1 Mức Độ Phức Tạp

• Graphics.h:

o Đơn Giản: graphics.h được thiết kế để dễ sử dụng và thích

hợp cho người mới bắt đầu Nó cung cấp các hàm cơ bản để vẽ các hình dạng đơn giản như đường thẳng, hình tròn, hình chữ nhật, và các thao tác với màu sắc

o Giới Hạn: Tuy nhiên, vì tính đơn giản này, graphics.h có các

giới hạn nhất định về mặt chức năng và không hỗ trợ các hiệu ứng đồ họa phức tạp

• OpenGL:

o Phức Tạp: OpenGL là một thư viện đồ họa mạnh mẽ và linh

hoạt, nhưng đi kèm với đó là độ phức tạp cao Việc làm quen với OpenGL đòi hỏi thời gian và công sức để hiểu rõ các khái niệm cơ bản như buffer, shader, và texture

o Mạnh Mẽ: OpenGL cho phép phát triển các ứng dụng đồ họa

phức tạp, từ các trò chơi 3D đến các phần mềm mô phỏng khoa học.

IV.2 Khả Năng Tương Thích

• Graphics.h:

Ngày đăng: 11/06/2024, 17:41

Xem thêm: