Giáo trình Đồ họa máy tính - Lê Đắc Nhường

docx 33 trang phuongnguyen 3190
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Đồ họa máy tính - Lê Đắc Nhường", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docxgiao_trinh_do_hoa_may_tinh_le_dac_nhuong.docx

Nội dung text: Giáo trình Đồ họa máy tính - Lê Đắc Nhường

  1. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Chương 1 TỔNG QUAN VỀ HỆ THỐNG ĐỒ HỌA MÁY TÍNH 1.1 CÁC ỨNG DỤNG CỦA ĐỒ HỌA Ngày nay, đồ họa máy tính được sử dụng trong rất nhiều lĩnh vực khác nhau như công nghiệp, thương mại, quản lí, giáo dục, giải trí, Số lượng các chương trình đồ họa ứng dụng thật khổng lồ và phát triển liên tục, sau đây là một số ứng dụng tiêu biểu: Thiết kế trợ giúp máy tính: AutoCAD or CAD (Computer Aided Design), Đồ thị, mô hình Vẽ nghệ thuật Phim ảnh Giao diện đồ họa cho phần mềm (Computer Graphic Interface) Xử lý ảnh, thị giác máy tính: nhận dạng, xử lý ảnh vệ tinh GIS (Geographic Information System) Đa phương tiện (Multimedia) 1.1.1 Thiết kế với sự hỗ trợ của máy tính Một trong những ứng dụng lớn nhất của đồ họa máy tính là hỗ trợ thiết kế (CAD – Computer-aided design). Ngày nay CAD đã được sử dụng hầu hết trong việc thiết kế các cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, và rất nhiều sản phẩm khác. Sử dụng các chương trình này, đầu tiên các đối tượng được hiển thị dưới dạng các phác thảo của phần khung (Wireframe outline), mà từ đó có thể thấy được toàn bộ hình dạng và các thành phần bên trong của các đối tượng. Sử dụng kĩ thuật này, người thiết kế sẽ dễ dàng nhận thấy ngay các thay đổi của đối tượng khi tiến hành hiệu chỉnh các chi tiết hay thay đổi góc nhìn, . Một khi đã thiết kế xong phần khung của đối tượng, các mô hình chiếu sáng, tô màu và tạo bóng bề mặt sẽ được kết hợp để tạo ra kết quả cuối cùng rất gần với thế giới thực . 1.1.2. Biểu diễn thông tin Đây là các ứng dụng sử dụng đồ họa máy tính để phát sinh các biểu đồ, đồ thị, dùng minh họa mối quan hệ giữa nhiều đối tượng với nhau. Các ứng dụng này thường được dùng để tóm lược các dữ liệu về tài chính, thống kê, kinh tế, khoa học, toán học, giúp cho việc nghiên cứu, quản lí, một cách có hiệu quả. 1.1.3. Lĩnh vực giải trí, nghệ thuật Trong lĩnh vực nghệ thuật, các chương trình máy tính như Paint Shop Pro, Adobe Photoshop, 3D Studio, hỗ trợ rất đắc lực cho các họa sĩ, các nhà tạo mẫu trong việc thiết kế các hình ảnh sống động, và rất thực. Với các chương trình này, người họa sĩ được máy tính tạo cho cảm giác y như đang làm việc ngoài đời thực bằng cách cung cấp các công cụ như khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng ba chiều, làm cho họ cảm thấy rất thoải mái và tiện lợi. Trang 9
  2. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Ngoài ra đồ họa máy tính còn giúp tạo ra các chương trình trò chơi, giải trí; hỗ trợ cho các kĩ xảo điện ảnh, cho các nhà làm phim. Có nhiều bộ phim rất nổi tiếng nhờ vào kĩ xảo điện ảnh như: Công viên Khủng long kỉ Jura (Jurassic Park), Titanic, Thế giới nước (Water World), Avatar 1.1.4. Giáo dục và đào tạo Hiện nay các chương trình mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hóa học, hoạt động của các gói tin trên mạng máy tính, được dùng rất nhiều trong việc hỗ trợ giảng dạy. Trong đào tạo, các ứng dụng mô phỏng được dùng để kiểm tra trình độ người lái, huấn luyện phi công, điều khiển giao thông, Hình 1.1 – Chương trình học về máy tính 1.1.5. Giao tiếp giữa máy tính và người dùng Mọi ứng dụng đều phải có giao diện giao tiếp với người dùng. Giao diện đồ họa thực sự là một cuộc cách mạng mang lại sự thuận tiện và thoải mái cho người dùng ứng dụng. Các ứng dụng dựa trên hệ điều hành MS Windows là một minh họa rất trực quan của giao diện đồ họa. Các chức năng của các ứng dụng này được thiết kế cho người dùng làm việc thông qua các biểu tượng mô tả chức năng đó. Ví dụ, chức năng lưu tập tin được hiểu thông qua biểu tượng đĩa mềm, chức năng in ấn được hiểu thông qua biểu tượng máy in, Để chọn các chức năng, người dùng sử dụng chuột trỏ đến và nhấn vào các biểu tượng tương ứng. Điểm thuận lợi chính khi dùng biểu tượng là kích thước không gian mà nó chiếm ít hơn nhiều so với dùng văn bản để mô tả cho cùng một chức năng, ngoài ra việc nắm bắt các chức năng qua các biểu tượng sẽ dễ dàng hơn rất nhiều khi người dùng gặp trở ngại về mặt ngôn ngữ. Các ứng dụng có giao diện đồ họa còn cho phép người dùng khả năng làm việc dễ dàng với nhiều cửa sổ với nhiều dạng tài liệu khác nhau cùng một lúc. 1.1.6. Khoa học nhận dạng (Pattern Recognition) Nhận dạng là một lĩnh vực trong kỹ thuật xử lý ảnh. Từ những mẫu ảnh có sẵn, ta phân loại theo cấu trúc hoặc theo các phương pháp xác định nào đó và bằng các thuật toán chọn lọc để có thể phân tích hay tổng hợp ảnh đã cho thành một tập hợp các ảnh gốc, các ảnh gốc này được lưu trong một thư viện và căn cứ vào thư viện này để nhận dạng các ảnh khác. Ví dụ: Phần mềm nhận dạng chữ viết (VnDOCR) của viện Công nghệ Thông tin Hà Nội, nhận dạng vân tay, nhận dạng mặt người trong khoa học hình sự Trang 10
  3. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.2 KHÁI NIỆM VỀ ĐỒ HỌA MÁY TÍNH Đồ họa máy tính là một ngành khoa học Tin học chuyên nghiên cứu về các phương pháp và kỹ thuật để có thể mô tả và thao tác trên các đối tượng của thế giới thực bằng 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. Với 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. Đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tính để phát sinh ra hình ảnh. Các vấn đề liên quan tới công việc này bao gồm: tạo, lưu trữ, thao tác trên các mô hình (các mô tả hình học của đối tượng) và các ảnh. Theo định nghĩa này thì đồ họa máy tính bao gồm việc thiết kế phần cứng như thiết bị hiển thị, các thuật toán cần thiết để phát sinh các đường trên các thiết bị này, các phần mềm được sử dụng cho cả người lập trình hệ thống và người lập trình ứng dụng đồ họa, và các chương trình ứng dụng tạo ảnh bằng máy tính. Đồ họa máy tính cung cấp một trong những phương cách tự nhiên nhất cho việc truyền đạt thông tin với máy tính. Ngày nay, trong nhiều quá trình thiết kế, cài đặt và xây dựng, thông tin mà hình ảnh mang lại là hầu như không thể thiếu được. Kĩ thuật trực quan (Scientific visualization) đã trở nên là một lĩnh vực rất quan trọng từ năm 1980, khi các nhà nghiên cứu khoa học và các kĩ sư nhận ra rằng họ không thể xử lí một lượng dữ liệu khổng lồ phát sinh từ các siêu máy tính mà dữ liệu không được tóm lược và làm nổi bật các xu hướng và hiện tượng qua nhiều loại biểu diễn đồ họa khác nhau. Đồ họa máy tính tương tác là một trong những phương tiện mang lại thêm nhiều sự thuận lợi cho người dùng trong việc phát sinh hình ảnh kể từ khi có phát minh của máy ảnh và truyền hình. Với máy tính, chúng ta có thể tạo các hình ảnh không chỉ của các đối tượng cụ thể, thực tế, mà còn của các đối tượng trừu tượng, nhân tạo; các biểu diễn của dữ liệu mà không có tính kế thừa về mặt hình học, như là kết quả điều tra, khảo sát. Hơn nữa, với đồ họa máy tính chúng ta không bị giới hạn trong các ảnh tĩnh. Các ảnh động thông thường mang lại nhiều hiệu quả hơn so với ảnh tĩnh, đặc biệt là với các hiện tượng biến đổi theo thời gian, cả thực tế (như sự đổi hướng của cánh máy bay siêu âm, hay sự phát triển của khuôn mặt người từ lúc trẻ thơ tới lúc già) và trừu tượng (như là xu hướng phát triển của việc sử dụng năng lượng, gia tăng dân số, ). Có nhiều cách tiếp cận trong việc học môn đồ họa, trải rộng từ việc nghiên cứu phần cứng tới việc học để sử dụng đồ họa máy tính chỉ trong một lĩnh vực chuyên biệt nào đó như là thiết kế mạch tích hợp cao (VLSI - Very large scale integrated circuit). Ở đây chúng ta tiếp cận từ góc độ của người lập trình ứng dụng, đó là người sử dụng tất cả các hỗ trợ của phần cứng, các công cụ phần mềm để xây dựng nên các ứng dụng. Tuy nhiên để có thể thiết kế và cài đặt các chương trình ứng dụng đồ họa được tốt, ngoài việc tìm hiểu các khả năng của công cụ lập trình, chúng ta cũng cần phải nắm vững các khái niệm về phần cứng; các vấn đề, các nguyên lí liên quan đến cài đặt phần mềm, các thuật toán, các ứng dụng, Trang 11
  4. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.3 CÁC THÀNH PHẦN CỦA MỘT HỆ THỐNG ĐỒ HỌA Một hệ đồ họa bao giờ cũng có hai thành phần chính đó là phần cứng và phần mềm. Phần cứng bao gồm các thiết bị hiển thị và nhập dữ liệu, Phần mềm bao gồm các công cụ lập trình và các trình ứng dụng đồ họa. Chúng ta sẽ lần lượt khảo sát các thành phần này. 1.3.1 Các thiết bị phần cứng - Màn hình 1.3.1.1 Màn hình CRT (Refresh Cathode-Ray Tubes -CRT) Trang 12
  5. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Tấm làm lệch tia Trang 13
  6. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Một chùm các tia điện tử (tia âm cực) phát ra từ một súng điện tử, vượt qua các hệ thống hội tụ (focusing) và dẫn hướng (deflection) sẽ hướng tới các vị trí xác định trên màn hình được phủ một lớp phosphor. Tại mỗi vị trí tương tác với tia điện tử, hạt phosphor sẽ phát ra một chấm sáng nhỏ. Vì ánh sáng phát ra bởi các hạt phosphor mờ dần rất nhanh nên cần phải có một cách nào đó để duy trì ảnh trên màn hình. Một trong các cách đó là lặp đi lặp lại nhiều lần việc vẽ lại ảnh thật nhanh bằng cách hướng các tia điện tử trở lại vị trí cũ. Kiểu hiển thị này gọi là refresh CRT. - Súng bắn điện tử thành tia qua hệ thống định hướng tới vị trí xác định trên màn hình phủ phosphor (phosphor phản xạ ánh sáng). Vì ánh sáng phosphor mất đi nhanh cho nên phải có hệ thống làm tươi ảnh: một trong cách đó là vẽ lặp liên tục trên các điểm ảnh (CRT làm tươi). Phosphor có nhiều loại: mất ánh sáng nhanh và chậm. - Có nhiều loại phosphor được dùng trong một CRT. Ngoài màu sắc ra, điểm khác nhau chính giữa các loại phosphor là "độ bền” (Persistent), đó là khoảng thời gian phát sáng sau khi tia CRT không còn tác động. Lớp phosphor có độ bền thấp cần tốc độ làm tươi cao hơn để giữ cho hình ảnh trên màn hình khỏi nhòe. Loại này thường rất tốt cho hoạt hình, rất cần thay đổi hình ảnh liên tục. Lớp phosphor có độ bền cao thường được dùng cho việc hiển thị các ảnh tĩnh, độ phức tạp cao. Mặc dù một số loại phosphor có độ bền lớn hơn 1 giây, tuy nhiên các màn hình đồ họa thường được xây dựng với độ bền dao động từ 10 đến 60 micro giây - Làm lệch tia điện tử bằng: điện trường hay từ trường (hình 1.2). - Hệ thống focusing làm chụm tia điện tử. - Mật độ màn hình: tổng số điểm cực đại có thể hiển thị trên màn hình. Định nghĩa chính xác hơn: mật độ là tổng số điểm/cm theo chiều ngang và đứng. Mật độ phụ thuộc loại phosphor và hệ thống làm chụm, làm lệch tia điện tử. Mật độ cao có thể hiển thị 4000 điểm theo mỗi chiều -> cho tổng số 16 triệu điểm ảnh có thể địa chỉ hóa. - Tỷ lệ co màn hình (Aspect ratio): là tỉ lệ của các điểm dọc và các điểm ngang cần để phát sinh các đoạn thẳng có độ dài đơn vị theo cả hai hướng trên màn hình (trong một số trường hợp người ta thường dùng tỉ số phương như là tỉ số của các điểm theo chiều ngang so với các điểm theo chiều dọc). Với các màn hình có tỉ số phương khác 1, dễ dàng nhận thấy là các hình vuông hiển thị trên nó sẽ có dạng hình chữ nhật, các hình tròn sẽ có dạng hình ellipse. Thực ra khái niệm tỉ số phương xuất phát từ bản chất khoảng cách (nếu tính cùng một đơn vị độ dài) giữa các điểm dọc không bằng khoảng cách giữa các điểm ngang. Một tỉ số phương có giá trị ¾ có nghĩa là vẽ 3 điểm theo chiều dọc sẽ có cùng độ dài với việc vẽ 4 điểm theo chiều ngang. Thí dụ EGA (Enhanced Graphics Adapter) có tỷ lệ ¾. Trang 14
  7. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.3.1.2 Màn hình Raster Màn hình Raster xuất hiện vào đầu những năm 70. Màn hình Raster dạng điểm là dạng thường gặp nhất trong số các dạng màn hình sử dụng CRT dựa trên công nghệ truyền hình. Trong hệ thống này, chùm tia điện tử sẽ được quét ngang qua màn hình, mỗi lần một dòng và quét tuần tự từ trên xuống dưới. Sự bật tắt của các điểm sáng trên màn hình phụ thuộc vào cường độ của tia điện tử và đây chính là cơ sở của việc tạo ra hình ảnh trên màn hình. Mỗi điểm trên màn hình được gọi là một pixel hay là pixel (viết tắt của Picture element). Các thông tin về hình ảnh hiển thị trên màn hình được lưu trữ trong một vùng bộ nhớ gọi là vùng đệm làm tươi (refresh buffer) hay là vùng đệm khung (frame buffer). Vùng bộ nhớ này lưu trữ tập các giá trị cường độ sáng của toàn bộ các điểm trên màn hình và luôn luôn tồn tại một song ánh giữa mỗi điểm trên màn hình và mỗi phần tử trong vùng này Làm tươi màn hình có 2 loại: quét ngẫu nhiên, raster Quét ngẫu nhiên: tia điện tử được diều khiển sao cho chỉ hướng tới phần màn hình có vẽ ảnh. Màn hình loại này có thể vẽ ngay đoạn thẳng cho nên gọi là màn hình véctơ. Hình 1.3 Kiến trúc màn hình Vector Quét raster: Tia điện tử quét mọi nơi trên màn hình, cường độ dòng điện tử on/off phù hợp với ảnh vẽ. Tạo ảnh bằng tập các điểm bắt đầu từ đỉnh màn hình. Hình 1.4 Kiến trúc màn hình Raster Hệ màn hình quét raster có khả năng nhớ tập giá trị cường độ cho toàn bộ các điểm màn hình để hiển thị lại hay được sử dụng nhất cho hệ thống đồ hoạ rẻ tiền (thí dụ tương tự: TV, máy in). - Tăng tốc độ: quét dòng lẻ, sau quét dòng chẵn, - Tần số làm tươi: 30-60 ảnh (frames)/second. 30 ảnh/sec có nghĩa 30 lần quét toàn bộ màn hình sau 1 sec. Nếu quét chậm (<25 frames/sec) thì ảnh sẽ bị nháy. Trang 15
  8. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Hình 1.5 – Quá trình tạo hình ảnh của các tia quét Để thay đổi các hình ảnh cần hiển thị, các giá trị tương ứng với vị trí và độ sáng phải được đặt vào vùng đệm khung. Hình 1.6 minh họa các giá trị tương ứng trong vùng đệm khung để hiển thị hình ảnh của chữ A trên màn hình. Đối với màn hình đen trắng, vùng đệm khung còn được gọi là bitmap, với các màn hình khác vùng đệm khung thường được gọi là pixmap. Để tạo ra các ảnh đen trắng, đơn giản chỉ cần lưu thông tin của mỗi pixel bằng 1 bit (các giá trị 0, 1 sẽ tượng trưng cho việc tắt (tối), bật (sáng) pixel trên màn hình). Trong trường hợp ảnh nhiều màu, người ta cần nhiều bit hơn, nếu thông tin của mỗi pixel được lưu bằng b bit, thì ta có thể có 2 b giá trị màu phân biệt cho pixel đó. Hình 1.6. Song ánh giữa vùng đệm khung và màn hình Trong các màn hình màu, người ta định nghĩa tập các màu làm việc trong một bảng tra (LookUp Table - LUT). Mỗi phần tử của LUT định nghĩa một bộ ba giá trị R (Red), G (Green), B (Blue) mô tả một màu nào đó. Khi cần sử dụng một màu, ta chỉ cần chỉ định số thứ tự (index) tương ứng của màu đó trong LUT. Bảng LUT có thể được thay đổi bởi các ứng dụng và người lập trình có thể can thiệp điều khiển. Với cách làm này chúng ta có thể tiết kiệm không gian lưu trữ cho mỗi phần tử trong vùng đệm khung. Số phần tử của LUT được xác định từ số lượng các bits/pixel. Nếu mỗi phần tử của vùng đệm khung dùng b bits để lưu thông tin của một pixel, thì bảng LUT có 2 b phần tử. Nếu b=8, LUT sẽ có 28=256 phần tử, đó chính là số màu có thể được hiển thị cùng một lúc trên màn hình. Việc làm tươi trên màn hình dạng này được thực hiện ở tốc độ 60 đến 80 frame/giây. Đôi khi tốc độ làm tươi còn được biểu diễn bằng đơn vị Hertz (Hz – số chu kì/ giây), trong đó một chu kì tương ứng với một frame. Sử dụng đơn vị này, chúng ta có thể mô tả tốc độ làm tươi 60 frame/giây đơn giản là 60Hz. Khi đạt đến cuối mỗi dòng quét, tia điện tử quay trở lại bên trái của màn hình để bắt đầu dòng quét kế tiếp. Việc quay trở lại phía trái màn hình sau khi làm tươi mỗi dòng quét được gọi là tia hồi ngang (Horizontal retrace). Và tới cuối mỗi frame, tia điện tử (tia hồi dọc – Vertical retrace) quay trở lại góc trên bên trái của màn hình để chuẩn bị bắt đầu frame kế tiếp. Trang 16
  9. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Trong một số màn hình, mỗi frame được hiển thị thành hai giai đoạn sử dụng kĩ thuật làm tươi đan xen nhau (Interlaced refesh). Ở giai đoạn đầu tiên, tia quét sẽ quét một số dòng từ trên xuống dưới, sau tia hồi dọc, các dòng còn lại sẽ được quét. Việc đan xen các dòng quét này cho phép chúng ta thấy được toàn màn hình hiển thị chỉ trong một nửa thời gian so với dùng để quét tất cả các dòng một lần từ trên xuống dưới. Kĩ thuật này thường được dùng cho loại màn hình có tốc độ làm tươi thấp. Hình 1.7 – Hoạt động của màn hình interlaced 1.3.1.3 Màn hình CRT màu Màn hình màu hiển thị ảnh màu bằng cách tổ hợp phosphors phản xạ ánh sáng màu khác nhau. Hai kỹ thuật chính để hiển thị màu bằng CRT là: thấm tia (Beam-penetration) và lọc bóng (Shadow-mask). - Beam-penetration: hiển thị ảnh màu trên màn hình quét ngẫu nhiên. Hai lớp phosphors (đỏ và green) phủ trên màn hình. Màu được hiển thị phụ thuộc vào độ thấm sâu của tia điện tử vào các lớp phosphor. Tia chậm (yếu) chỉ tác động lớp ngoài cho màu đỏ. Tia mạnh thấm qua lớp đỏ đên green và phát màu green. Tia trung bình tổ hợp hai màu cho hai màu mới: Orange và Yellow. Phương pháp này rẻ, nhưng chỉ cho 4 màu kết quả là chất lượng ảnh màu kém. - Phương pháp shadow-mask (hình 1.8): hay được sử dụng trong hệ thống quét raster (kể cả TV) vì chúng có thể hiển thị nhiều màu hơn. - Màn hình loại này phủ các mẫu tam giác nhỏ, là ba điểm phosphor rất gần nhau. Một điểm phản xạ ánh sáng red, một phản xạ ánh sáng Green và cái còn lại cho màu blue. Hình 1.8 Màn hình CRT màu sử dụng phương pháp Shadow Mask - Tế bào võng mạc con người nhạy với 3 loại màu RGB, có độ dài bước sóng lần lượt là 440, 545 và 580 nm. Mỗi màu được nhận biết riêng rẽ. Hình 1.9 là độ nhạy trung bình của mắt người với ánh RGB. Trang 17
  10. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính - Màn hình này có 3 súng bắn điện tử khác nhau, mỗi súng cho một điểm màu. Nó còn có lưới shadow-mask ngay sau màn hình phủ phosphor. Ba dòng điện tử được dẫn đường và chụm lại thành nhóm vào shadow-mask mà chúng chứa các lỗ hổng gắn vào mẫu điểm phosphor. - Khi ba dòng điện tử đi qua lỗ trên mặt nạ, chúng kích hoạt tam giác điểm để xuất hiện điểm màu nhỏ trên màn hình. - Các điểm phosphor trên màn hình được xếp đặt sao cho mỗi tia điện tử chỉ tác động đến một điểm màu tương ứng. Các màu khác nhau trên màn hình có được nhờ tổ hợp cường độ khác nhau của ba tia điện tử: khi ngừng tia đỏ, green thì ta có màu blue, - Nếu tia điện tử chỉ có hai mức on và off thì màn hình chỉ hiển thị được 8 màu. Nếu chúng có nhiều mức khác nhau thì có thể hiển thị được tới hàng triệu màu khác nhau. 1.3.1.4 Màn hình LCD a. Nguyên lý: Các phân tử tinh thể lỏng sắp xếp song song theo rãnh - Khi các phân tử tinh thể lỏng tiếp xúc bề mặt có rãnh theo hướng nhất định thì các phân tử này sẽ xếp hàng song song theo rãnh. - Hình trên cho thấy, phía trái là phân tử hỗn độn, bên phải là LC tiếp xúc với bề mặt có rãnh, chúng xếp dặt theo phương các rãnh (hình 1.10a). Hình 1.10a Các tinh thể trên bề mặt màn hình LCD Khi LC kẹp giữa hai hai tấm bề mặt có rãnh, chúng sẽ tự xếp đặt theo phương a hay b - Các phân tử phía trên xếp đặt theo phương a và phương b tại phía dưới (hình 1.10b). Như vậy, các phân tử LC có cấu trúc xoắn (trường hợp này xoắn 90 độ). Hình 1.10.b Hình 1.10.c Trang 18
  11. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính - Ánh sáng đi qua không gian xếp đặt của các phân tử LC Ánh sáng cũng bị xoắn theo các phân tử LC xoắn. Ánh sáng đi qua các nguyên tử tinh thể lỏng, theo hướng các phân tử sắp xếp. Khi các phân tử LC xoắn 90 độ thì ánh sáng cũng xoắn 90 độ (hình 1.10c). Hình 1.10.d Hình 1.10.e - Các phân tử LC tự xếp đặt lại khi có điện áp: Khi có điện áp, ánh sáng xoắn lại truyền thẳng. Khi có điện áp các phân tử tự xếp đặt theo phương thẳng đứng (theo trường điện) và ánh sáng đi thẳng dọc theo các phân tử (hình 1.10d). - Ngăn ánh sáng bằng hai bộ lọc phân cực (hình 1.10e) Khi cho điện áp vào tổ hợp 2 bộ lọc phân cực và tinh thể lỏng xoắn, màn hình LCD xuất hiện. Ánh sáng đi qua khi hai bộ lọc phân cực được xếp đặt theo phương trục phân cực như hình phía trái. Ánh sáng bị chặn khi hai bộ lọc phân cực được xếp đặt theo phương trục phân cực như hình phía phải. - Màn hình LCD kiểu TN (Twisted nematic) Tổ hợp của các bộ lọc phân cực và tinh thể lỏng xoắn tạo ra màn hình LCD. Khi hai bộ lọc phân cực được xếp đặt theo trục phân cực vuông góc, ánh sáng đi vào từ phía trên sẽ bị đổi hướng 90 độ theo hướng sắp xếp của phân tử LC sao cho chúng đi qua được bộ lọc phân cực dưới. Khi có điện áp, các phân tử LC xoắn sẽ sắp xếp thẳng, thay đổi lại phương ánh sáng. Do vậy làm ánh sáng không đi qua được bộ lọc dưới (hình 1.10f). Hình 1.10.f Hình 1.10.g Trang 19
  12. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính b. Cấu trúc LCD: LCD: Có cấu trúc xếp đặt tương tự bánh sandwich như sau (hình 1.10g): 1. Bộ lọc phân cực: Điều khiển ánh sáng đi vào và đi ra 2. Lớp kính nền: Chặn thấm các điện tử từ cực điện 3. Cực điện trong suốt: Các cực này điều khiển LCD, có phải trong suốt để không ảnh hưởng đến chất lượng ảnh. 4. Tầng liên kết sắp hàng: Màng mỏng được sử dụng để sắp hàng các phân tử LC theo phương cố định. 5. Tinh thể lỏng 6. Tấm định vị khoảng cách giữa các tấm kính. 7. Bộ lọc màu: Màu được thể hiện bằng mô hình RGB. 8. Bộ phận chiếu sáng: Màn hình được chiếu sáng từ sau để rõ hơn. Trong LCD đơn sắc thường sử dụng gương phản xạ ánh sáng tự nhiên để đọc được ảnh. Cấu trúc hệ thống điều khiển ma trận tích cực (hình 1.10h) - Khác với hệ thống điều khiển ma trận đơn trước đây, trong màn hình loại mới này, transistor chuyển mạch (TFT) hay diode được gắn vào mỗi pixel để chuyển trạng thái on/off. Các điện cực X,Y cùng nằm trên một phía để tạo thành ma trận TFT hay diode. (Có tên màn hình TFT LCD trong các máy tính laptop) Hình 1.10.h1 Hình 1.10.h2 - Các tín hiệu chuyển mạch áp vào điện cực X còn các tín hiệu video áp vào điện cực Y. c. Phân loại LCD theo cách khác - Twisted Nematic (TN): Các phân tử LC xoắn 90 độ. Độ tương phản ở màn hình lớn không tốt. - Super Twisted Nematic (STN): Các phân tử LC xoắn từ 180-260 độ, Tương phản tốt hơn. - Triple Super Twisted Nematic (TSTN): Cho chất lượng đặc biệt tốt. 1.3.1.5 Plasma-Panel Displays Phần lớn màn hình máy tính là CRT, nhưng nhiều máy tính còn sử dụng công nghệ khác. Màn hình plasma-Panel được hình thành từ khí Neon giữa các tấm kính. Nguyên lý hoạt động của màn hình Plasma tương tự như nguyên lý hoạt động của đèn huỳnh quang là một ống nhỏ chứa đầy ga. Khi bị tác động bởi trường điện từ nó sẽ phát sáng. Trường điện từ UV tác động lên phosphor sẽ phát sinh ra các màu khác nhau. Dãy các cực điện theo chiều ngang và dọc tạo thành các điểm trong neon. Để tạo các điểm riêng biệt ta tách khí thành các bọt (hình 1.11). Trang 20
  13. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Hình 1.11 Nguyên tắc hoạt động của màn hình Plasma Các điểm neon trong tấm plasma được sáng do đốt cực bằng điện áp ~120V trên điện cực tương ứng. Sau khi cháy chỉ cần mức duy trì ~90V. Giá đắt hơn so với CRT. Không cần làm tươi ảnh. Màn hình mỏng. Ưu điểm: Góc quan sát rộng, phù hợp với các màn hình có kích thước lớn; Ánh sáng rõ Nhược điểm: - Đắt tiền; Kích thước pixel khá lớn (cỡ 1mm so với 0.2 mm) - Phosphor bị yếu dần; Ánh sáng yếu hơn CRTs, sử dụng nhiều năng lượng 1.3.2 Các thiết bị phần cứng – Máy in Hai loại chính là Impact (va trạm) và Nonimpact (không va trạm) - Máy in va trạm: nhấn bề mặt ký tự vào băng mực trên giấy thí dụ máy in dòng. Mặt ký tự được đặt trên băng, trống, bánh xe (wheel). Máy in điểm chứa trường các kim nhỏ để in từng ký tự. - Máy in không va trạm: có tốc độ cao hơn, tĩnh hơn. Các kỹ thuật sử dụng trong máy in không va: phun mực, laser, tĩnh điện, nhiệt điện. - Máy in kim cho khả năng in đồ họa: máy in kim có 9 hay 24 kim xếp theo chiều đứng như hình vẽ. Mật độ: 9kim chiều ngang 240dpi, đứng 72 dpi; của máy 24 kim là 360dpi x 180dpi. Một vài loại đạt được đến 360 dpi. Hình 1.12 Máy in Laser 1.3.2.1 Máy in laser (giống máy chụp photocopy) Tia laser chiếu vào trống để tạo ra phân bổ điện tích tĩnh trên mặt trống mà nó đã được phủ bằng vật liệu quang điện, thí dụ selenium (selen cùng nhóm lưu huỳnh). Mực tích điện (Toner) được dẫn qua để Trang 21
  14. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính dính vào trống sau đó truyền sang giấy. Có thể người phát minh đầu tiên là kỹ sư Bungaria, khi ông muốn có máy in giống Xerox. Mật độ máy in này khá cao, thường từ 300, 600 dpi hay cao hơn. Máy in theo từng trang nên phải có bộ nhớ trong lớn (tối thiểu 512 Kb). Tuy nhiên để in 1 trang A4, phân dải 300x300dpi thì cần 1 Mb nhớ. Từ 1990 trong các máy in HP có sử dụng công nghệ Resolution Enhancement Technology (RET). Công nghệ này làm giảm kích thước điểm in mà không tăng mật độ để in ảnh véc tơ; cho phép in chữ, hình nét hơn. Máy in laser: dùng công nghệ in tĩnh điện (Electrostatic - ES) là phương pháp in tạo hình ký tự bằng cách tạo ra điện tích tĩnh điện và làm chảy mực lên giấy nhờ quá trình nung nóng. Vậy khác hoàn toàn với các loại máy in trước dùng đầu in để in, loại máy in này tạo sản phẩm thông qua một quá trình phức tạp. Quá trình in tĩnh điện thực hiện trong hệ thống tạo hình - image formation system (IFS) có các bước : Xóa trống nhạy sáng để gạt bỏ các hạt mực còn trên đó, và làm trống trở nên trung hòa điện tích. Nạp điện lên bề mặt trống bằng điện áp âm rất lớn (khoảng 5000V) - sẵn sàng ghi hình. Máy in giải mã tín hiệu theo từng dòng máy tính đưa sang và xây dựng bản đồ bit của trang in, dùng chùm tia sáng ghi hình bản đồ này lên mặt trống. Mực được phun vào mặt trống đang quay và bị hút vào các điểm được chiếu sáng và nhiễm điện tích âm - phương pháp ghi hình Ðen. Còn nếu mực được phun vào các điểm không được chiếu sáng gọi là phương pháp ghi hình Trắng, cách này hình đen hơn, dày hơn. Giấy được đưa qua một bộ phận nạp điện tích dương trước khi đi qua trống để hút điện tích âm là các hạt mực. Sau đó qua hện thống ép nhiệt nóng 180 oC làm hạt mực chảy ra và dính luôn vào giấy. Với phương pháp đó, có thể tốc độ in lên đến 10 trang văn bản trong một giây. Một hộp mực tiêu chuẩn cho máy in thông thường có thể in được từ 200-5000 bản in tùy độ phức tạp hình ảnh. Máy in màu: hoạt động dựa trên nguyên tắc các điểm màu cơ bản li ti xen kẽ nhau tạo nên nhiều màu sắc phong phú. Ðể thể hiện màu sắc theo nguyên tắc này có nhiều phương pháp phối màu khác nhau. Kiểu RGB - tức là Red-Green-Blue (Ðỏ, Xanh lá cây, Xanh dương) giống như cách tạo màu vủa tivi và mành hiển thị máy tính. Cách này dùng ba màu Ðỏ, Xanh lá cây, xanh dương làm màu căn bản, từ đó tạo ra các màu khác. Kiểu HSB - tức dựa trên các yếu tố Hue-Saturation-Brightnes tức là sắc màu, lượng màu, độ sáng. Kiểu CMYK sử dụng tỷ lệ pha trộn các màu Cyan-xanh dương sáng lợt, Magenta- hồng tím, Yellow-vàng, blach-đen. Trong ngành in ấn chế bản thì gọi màu C -cyan là xanh, M - magenta là đỏ, Y - yellow là vàng, K - black là đen. Vì màu sắc là một sự cảm nhận nhạy cảm ngay cả với con người, nên đối với máy in màu, việc thể hiện màu phụ thuộc rất nhiều vào thiết bị. 1.3.2.2 Máy in nhiệt, máy in phun Phương pháp nhiệt sử dụng nhiệt năng của đầu in ma trận điểm để tạo ra mẫu trên giấy cảm nhiệt (như máy fax) hay trên băng phủ mực cảm nhiệt. Mật độ có thể đạt 300dpi, có thể đen trắng hay màu. Máy phun mực (Ink-Jet): phun mực theo hàng ngang còn giấy cuộn theo trống. Trường điện từ của mực tác động thành các mẫu ma trận điểm trên giấy. Đầu in không va trạm giấy -> thuận tiện cho in phim. Độ phân giải khá cao: HP Desk Jet 550C đạt tới 300 dpi -> cho màu đẹp. Máy in đen trắng và màu: Màu tổ hợp từ cyan, magenta và yellow. Máy phun mực thường phun 3 màu đồng thời. Máy in laser chia ba giai đoạn. Trang 22
  15. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Hình 1.13. Máy in nhiệt Hình 1.14 Công nghệ RET Máy in nhiệt - dùng các xung điện từ mạch kích thích của máy in làm cho đầu kim ma trận điểm nóng lên và nguội đi rất nhanh, nhưng đầu kim này không gõ vào giấy mà do sự nóng nguội theo ma trận điểm nó sẽ làm đổi màu các điểm trên loại giấy đặc biệt tạo nên các ký tự cần in. Tốc độ máy in tương đối nhanh và ít tốn điện, nhưng phải dùng loại giấy in nhiệt - thermal paper. Ðể khắc phục nhược điểm phai màu của máy in nhiệt, người ta dùng công nghệ máy in truyền mực bằng nhiệt - thermal fusion printer. Ðầu in loại này cũng là ma trận các kim nhiệt được nung nóng nhanh bằng các xung tín hiệu thích hợp của mạch điện tử trong máy. Máy in phun mực - Inkfet printer : cũng là loại máy in không gõ, đồng thời đầu in cũng không tiếp xúc giấy in, nó thực hiện thao tác in bằng cách phun các giọt mực lên các hạt mực li ti tạo nên bản in. Trong máy in phun ngày nay thiết bị phun dùng tinh thể áp điện - nó dao động cơ học với tần số cố định khi có điện áp điều khiển tác động vào. Khi đặt trong ống dẫn mực nó đẩy mực ra khỏi ống và hút thêm mực khác vào - như một máy bơm. Loại này bị hạn chế bởi tốc độ in, do các phần tử in phải có thời gian nguội nếu không sẽ gây nhiều vấn đề phức tạp khác, nhưng ưu điểm dùng điện áp thấp từ 24V đến 50 V làm cho nó tiện dụng hơn. Do tính chất in phun như vậy, nên loại máy này có thể dùng với mọi loại giáy, độ nét và độ mịn của bản in có chất lượng cao, đôi khi rất khó phân biệt với loại máy in laser. Loại máy in phun rẻ hơn laser nhiều nhưng chi phí in cao hơn 1.3.2.3 Máy vẽ (Plotters) Thiết bị này vẽ đường. Thông thường ta thấy máy vẽ sử dụng bút mực. Nhưng hiện nay máy vẽ còn sử dụng các công nghệ như tia laser, phun mực, tĩnh điện, Máy vẽ bút sử dụng 1 hay nhiều bút với các màu khác nhau. 1.3.3 Phần mềm Phần mềm đồ họa có thể phân thành 2 loại: các công cụ lập trình và các trình ứng dụng đồ họa phục vụ cho một mục đích nào đó. Các công cụ lập trình cung cấp một tập các hàm đồ họa có thể được dùng trong các ngôn ngữ lập trình cấp cao như C, Pascal, Ví dụ như các thư viện đồ họa của các ngôn ngữ như C, Pascal hay GL (Graphics Library) của Silicon Graphics. Các hàm cơ sở của nó bao gồm việc tạo các đối tượng cơ sở của hình ảnh như đoạn thẳng, đa giác, đường tròn, , thay đổi màu sắc, chọn khung nhìn, áp dụng các phép biến đổi, . Trong khi đó, các ứng dụng đồ họa được thiết kế cho những người dùng không phải là lập trình viên, cho phép người dùng tạo các đối tượng, hình ảnh, mà không cần quan tâm tới việc chúng được tạo ra như thế nào. Ví dụ như là Photoshop, AutoCAD, 1.3.3.1 Biểu diễn tọa độ Thông thường các hệ đồ họa sử dụng hệ tọa độ Descartes để mô tả đối tượng. Nếu các tọa độ của đối tượng được mô tả trong các hệ tọa độ khác như tọa độ cầu, , chúng phải được chuyển về tọa độ Descartes trước khi dùng. Trang 23
  16. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.3.3.2 Quy trình hiển thị đối tượng Trước tiên chúng ta mô tả các đối tượng thành phần của một ảnh phức tạp trong các hệ tọa độ riêng để thuận tiện cho việc biểu diễn tọa độ của chúng. Các hệ tọa độ này được gọi là hệ tọa độ mô hình (Modeling coordinates) hay còn gọi là hệ tọa độ cục bộ (Local coordinates). Một khi các đối tượng thành phần được biểu diễn xong, chúng ta sẽ đặt chúng vào các vị trí tương ứng trong ảnh sử dụng hệ tọa độ thế giới thực (World coordinates). Sau cùng, các mô tả của ảnh trong hệ tọa độ thế giới thực sẽ được chuyển đến một hoặc nhiều hệ tọa độ khác nhau của thiết bị hiển thị, tùy vào chúng ta muốn hiển thị trên thiết bị nào. Các hệ tọa độ này còn được gọi là hệ tọa độ thiết bị (Device coordinates). Các mô tả trong các hệ tọa độ cục bộ và hệ tọa độ thế giới thực cho phép chúng ta sử dụng thứ nguyên thích hợp cho các đơn vị đo mà không phải bị ràng buộc gì của từng thiết bị hiển thị cụ thể. Hình 1.15. Quy trình hiển thị đối tượng Thông thường, các hệ đồ họa chuyển các mô tả trong hệ tọa độ thế giới thực tới hệ tọa độ thiết bị chuẩn (Normalized device coordinates) có các chiều là đơn vị trước khi chuyển tới hệ tọa độ thiết bị. Điều này làm cho hệ thống độc lập với nhiều loại thiết bị khác nhau. 1.3.3.3 Các hàm đồ họa Các hàm đồ họa cung cấp khả năng tạo và thao tác hình ảnh. Các hàm này được phân loại như sau : - Tập các công cụ tạo ra các đối tượng đồ họa cơ sở như điểm, đoạn thẳng, đường cong, vùng tô, kí tự, - Tập các công cụ thay đổi thuộc tính dùng để thay đổi thuộc tính của các đối tượng đồ họa cơ sở như màu sắc, kiểu đường, kiểu chữ, mẫu tô, - Tập các công cụ thực hiện các phép biến đổi hình học dùng để thay đổi kích thước vị trí, hướng của các đối tượng, - Tập các công cụ biến đổi hệ quan sát dùng để xác định vị trí quan sát đối tượng và vị trí trên thiết bị hiển thị được dùng để hiển thị đối tượng. - Tập các công cụ nhập liệu: Các ứng dụng đồ họa có thể sử dụng nhiều loại thiết bị nhập khác nhau như bút vẽ, bảng, chuột, bàn phím, để điều khiển và xử lí dòng dữ liệu nhập. - Cuối cùng là tập các công cụ chứa các thao tác dùng cho việc quản lí và điều khiển ví dụ như xóa toàn bộ màn hình, thiết lập chế độ đồ họa, Trang 24
  17. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.3.3.4 Các chuẩn phần mềm Mục tiêu căn bản của các phần mềm đồ họa được chuẩn là tính tương thích. Khi các công cụ được thiết kế với các hàm đồ họa chuẩn, phần mềm có thể được di chuyển một cách dễ dàng từ hệ phần cứng này sang hệ phần cứng khác và được dùng trong nhiều cài đặt và ứng dụng khác nhau. Sau những nỗ lực không nhỏ của các tổ chức chuẩn hóa của các quốc gia và quốc tế, một chuẩn cho việc phát triển các phần mềm đồ họa đã ra đời đó là GKS (Graphics Kernel System) - Hệ đồ họa cơ sở. Hệ thống này ban đầu được thiết kế cho tập các công cụ đồ họa hai chiều, sau đó được phát triển và mở rộng cho đồ họa ba chiều. Các hàm của GKS thực sự chỉ là các mô tả trừu tượng, độc lập với bất kì ngôn ngữ lập trình nào. Để cài đặt một chuẩn đồ họa cho ngôn ngữ cụ thể nào, các cú pháp tương ứng sẽ được xác định và cụ thể hóa. Mặc dù GKS xác lập được các ý tưởng ban đầu cho các hàm đồ họa cơ sở, tuy nhiên nó không cung cấp một cách thức chuẩn cho việc giao tiếp đồ họa với các thiết bị xuất. Nó cũng không xác định các cách thức cho các mô hình thời gian thực cũng như các cách thức lưu trữ và chuyển đổi hình ảnh. Các chuẩn cho các cách thức này được xây dựng riêng, cụ thể là : Các chuẩn cho các cách thức giao tiếp thiết bị được cho bởi hệ CGI (Computer Graphics Interface System), hệ CGM (Computer Graphics Metafile) xác định các chuẩn cho việc lưu trữ và chuyển đổi hình ảnh, và hệ PHIGS (Programmer’s Hierarchical Interactive Graphics Standard) xác định các cách thức chuẩn cho các mô hình thời gian thực và các khả năng lập trình ở mức độ cao hơn mà chưa được quan tâm tới trong GKS. 1.4 TỔ CHỨC BỘ NHỚ MÀN HÌNH VÀ CÁC PHƯƠNG PHÁP TRUY CẬP 1.4.1 Các loại màn hình Mỗi màn hình máy tính IBM PC có một thông số kĩ thuật riêng, màn hình được điều khiển bởi một vỉ (card) màn hình tương ứng. Trên thị trường khi tìm hiểu về màn hình ta thường gặp một số loại màn hình sau: - MDA Monochrome Display Adapter : Màn hình đen trắng. - CGA Color Graphics Adapter : Màn hình màu đồ hoạ. - EGA Enhanced Graphics Adapter: Màn hình đồ hoạ hoàn thiện. - VGA Video Graphics Array - SVGA Super Video Graphics Array. 1.4.1.1 Màn hình EGA (Enhanced Graphics Adapter) - IBM EGA có từ đầu 1985: khả năng hiển thị 16 màu đồng thời từ 64 màu, phân dải 640x350 - Lập trình viên không thâm nhập được các thanh ghi của chúng - Các pixel không vuông - Vì giá rẻ nên chúng là chuẩn trong một số năm trước đây 1.4.1.2 Màn hình VGA (Video Graphics Array) - Xuất hiện vào 1987. Chuẩn đồ họa được sử dụng rộng rãi nhất. Phần mềm đồ họa trên VGA có thị trường rộng rãi nhất. - PC với VGA có khả năng hiển thị với độ phân giải 640x480 (với 16 màu / pixel) hay 320x200 Trang 25
  18. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính (với 256 màu/pixel), hay khả năng không công bố là 360x480 với 256 màu. - Từ 1990 hầu như 100% PC có VGA hay tương thích. - VGA sử dụng DAC - Digital to Analog Converter 6-bit để phát sinh tín hiệu video RGB số với khả năng hiển thị 256 màu đồng thời từ 262144 (23*6) màu. - Khó lập trình trên VGA để tận dụng hết khả năng của chúng. Các thanh ghi đọc được, có BIOS mở rộng và nhiều khoảng trống cho font. Bảng 1.1 VGA and VESA Video Modes Mode# VESA# Number of Colors Resolution Display Mode 0/1 _ 16/256K 320x200 Text 2/3 _ 16/256K 640x200 Text 4/5 _ 4/256K 320x200 Text 6 _ 2/256K 640x200 Text 7 _ mono 720x350 Text 0D _ 16/256K 320x200 Graphics 0E _ 16/256K 640x200 Graphics 0F _ mono 640x350 Graphics 10 _ 16/256K 640x350 Graphics 11 _ 2/256K 640x480 Graphics 12 _ 16/256K 640x480 Graphics 13 _ 256/256K 320x200 Graphics _10A 16/256K 1056x350 Text _109 16/256K 1056x350 Text _100 256/256K 640x400 Graphics _101 256/256K 640x480 Graphics _102(6A) 16/256K 800x600 Graphics _103 256/256K 800x600 Graphics _104 16/256K 1024x768 Graphics _105 256/256K 1024x768 Graphics _106 16/256K 1280x1024 Graphics _107 256/256K 1280x1024 Graphics _111 64K/64K 640x480 Graphics _114 64K/64K 800x600 Graphics _110 32K/32K 640x480 Graphics _113 32K/32K 800x600 Graphics _10D 32K/32K 320x200 Graphics _10E 64K/64K 320x200 Graphics _10F 16M/16M 320x200 Graphics _112 16M/16M 640x480 Graphics _117 64K/64K 1024x768 Graphics _170 32K/32K 512x480 Graphics _171 64K/64K 512x480 Graphics 1.4.1.3 Màn hình SVGA (Super VGA) Xuất hiện cuối 1987 (NEC). Cho khả năng hiển thị 800x600 với 256 màu. IBM nhái: 8514/A, nhưng cho khả năng tới 1024x768 và có co-processor trên vỉ. Trang 26
  19. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Bảng 1.2 Tên hãng Video mode # ATI Technologies, Inc 65h Chips & Technologies 72h Oak Technology 56h Realtek Semiconductors Co., ltd. 27h Trident Microsystems 5Fh Western Digital 5Dh Đáng tiếc là IBM không công bố đặc tả phần cứng cho vỉ 8514/A cho nên dẫn tới chúng không trở thành chuẩn công nghiệp. Ban đầu SVGA gây không ít khó khăn vì không được sự thống nhất giữa các hãng chế tạo. Thí dụ về chọn chế độ màn hình 1024x768x16 màu của các hãng là khác nhau như trên bảng 1.2. Mọi hãng trông chờ IBM thống nhất, nhưng thất bại. 1.4.1.4 Hiệp hội chuẩn hóa màn hình (Video Electronics Standards Association - VESA) Video Electronics Standards Association có nhiệm vụ đưa ra chuẩn SVGA (1989-1991) bao gồm định nghĩa 8 lời gọi cho ngắt INT 10h, chức năng 4FH và chức năng này được gọi là phần mở rộng VESA BIOS (xem Phụ lục). VESA BIOS cho phép chuyển đổi bank nhớ nhờ lời gọi hàm đặc biệt hay để có thể lấy địa chỉ các hàm của hãng chế tạo hay tự ta viết lấy. Kiến trúc PC làm việc trang 64kb, chế độ màn hình 1024x768x256 màu cần 768kb. Muốn thâm nhập chúng thì phần cứng phải có khả năng chuyển mạch 12 băng nhớ. 1.4.1.5 Tăng tốc màn hình Mong muốn có Co-processor trên vỉ xử lý ảnh, hình ảnh chuyển động, từ các thành phần đồ họa cơ sở: vẽ đường, hình tròn, tô đa giác, thu phóng ảnh, Thị trường có các vi mạch làm tăng tốc màn hình sau: Vỉ màn hình IBM 8514/A, TMS34010 - TMS34020 của Texas, Hitachi có HD 63484, Từ khi có Windows đã xuất hiện nhiều chip để xây dựng điều khiển màn hình, các vi mạch thông dụng là S3 86C928, CL-GD5426 1.4.2 Kiến trúc vỉ điều khiển màn hình PC Hình 1.16 Cấu trúc của hệ thống màn hình của máy PC. Màn hình Hầu hết màn hình SVGA (multisync) là analog phát sinh số màu không giới hạn. Có khả năng hiển thị 1280x1024. Có nhiều kiểu màn hình trên thị trường Trang 27
  20. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Vỉ màn hình (Video Card) Vỉ màn hình chứa: chíp, bộ nhớ và BIOS. Video chíp: phần cứng chuyển đổi ảnh trong bộ nhớ thành tín hiệu màn hình và các điều khiển hoạt động của chúng. Một số loại vỉ trợ giúp các chức năng cơ bản đồ họa. Phần cứng còn bao gồm: DAC, bộ nhớ. Do vậy có thể hiển thị độ phân giải cao và nhiều màu hơn. RAM thường là: 512kb, 1Mb, 2Mb, 4Mb và nhiều hơn. BIOS quản lý trao đổi thông tin giữa CPU, chip video và bộ nhớ thông qua Bus: VESA Local Bus hay PCI (Peripheral Components Interconnect) để trao đổi thông tin nhanh hơn. Cấu trúc bộ nhớ Bộ nhớ video có thể tới 2 hay 4 Mb. Với vỉ màn hình TrueColor: bộ nhớ video cho độ phân giải 1024x768 cần 1024*768*3 =2.3 Mb. Giai đoạn đầu IBM cho là chỉ cần 128K RAM Video là đủ, cho nên thiết kế chỉ để địa chỉ trong khoảng bắt đầu A000h đến BFFFh cho chúng. Chúng tổ chức theo segment cửa sổ 64kb (cho hai màn hình). Vậy muốn thâm nhập toàn bộ 2 hay 4 Mb thì phải có cơ chế chuyển bank. Muốn xâm nhập video RAM thì phải có số hiệu bank và offset. Cấu trúc logíc của Video RAM khác nhau giữa các chế độ màn hình. Muốn thâm nhập trực tiếp RAM thì phải biết kiến trúc của chúng. Trang 28
  21. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Trang 29 UMA (384k)666666
  22. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Hình 1.17 Phân bố bộ nhớ của máy PC. Các máy tính PC được thiết kế trên nền IBM-PC 1981 với qui định cho 1Mb nhớ như sau: 640K RAM và 384 K dành cho hệ thống (phần này về sau gọi là UMA-Upper Memory Area) (DOS5.0 có thể thâm nhập). Trong UMA có đến 256K dành cho ROM. Từ A0000h-BFFFFh (128k) dành cho Video RAM. Kiến trúc 8086 địa chỉ hóa tới 1Mb theo cơ chế SEG:OFF. Máy 286 có 24 bit địa chỉ để địa chỉ hóa SEG, chúng còn có 16 bit OFF để thâm nhập 16Mb. Máy 386 trở lên có 32 bit địa chỉ để địa chỉ hoá SEG và 32 bit OFF để thâm nhập 4Gb. Nhưng để thâm nhập chúng ta phải cần nhiều phần mềm trợ giúp phần cứng. Hai kỹ thuật hay dùng: Trang 30
  23. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Hình 1.18 Kiến trúc bộ nhớ màn hình trong chế độ 16 màu. EMS (Expanded Memory Specification) của LIM (Lotus-Intel-Microsoft). Kỹ thuật này chỉ làm việc xoay quanh giới hạn 1Mb. EMS ánh xạ 1 hay nhiều khối 16Mb nhớ vào vùng nhớ UMA của 86 (và gọi chúng là page frame). Sau đó thực hiện trao đổi vào ra. Phần mềm hỗ trợ EMS386.EXE. Kỹ thuật XMS (extended memory): là vùng nhớ có địa chỉ logic ngay trên 1M của máy 286 hay sau này. Phần mềm trợ giúp HIMEM.SYS. Vùng nhớ để trình ứng dụng và mã trình trong Video BIOS cùng chia sẻ là: A0000h-BFFFFh dành cho Video RAM. Trong đó: A0000h-AFFFFh cho màn hình đồ họa. B0000h-B7FFF cho màn hình đơn sắc. B8000 đến BFFFFh cho màn hình chế độ văn bản mầu. Thí dụ màn hình VGA, chế độ 16 màu: 1 pixel cần 1/2 byte, vậy bộ nhớ Video RAM cần cho mode này là 640x480/2 = 150k. Thực tế Video RAM của VGA chế độ này tổ chức theo planes, tất cả chúng đều bắt đầu từ địa chỉ A0000h, vậy 4 planes sẽ cho 256k (đủ cho nhu cầu của mode này – mode 12h). Một số chế độ màn hình đồ họa yêu cầu nhiều vùng nhớ hơn để chứa giá trị các pixel, vậy cần cơ chế chuyển bank nhớ. Hình 1.19a. SVGA 256 màu Hình 1.19b. SVGA True Color Hình 1.19c. SVGA True Color Trang 31
  24. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Các hình 1.18, 1.19a,b,c là cấu trúc bộ nhớ video của một vài loại màn hình. - Chế độ 16 màu (hình 1.18): bộ nhớ tổ chức thành planes, mỗi bit trên plane tham gia vào mã hoá màu -> 4 bit cho 16 màu. Bộ giải mã màu được gọi là bộ màu. Cả 4 plane đều có chung địa chỉ, bắt đầu A000:0000h. 1 plane có thể cho tới 64k, vậy 4 planes cho tới 256k. - Màn hình EGA chế độ 16 màu (nửa phải hình 1.18): mỗi thanh ghi palette chứa 6 bit cho 64 lựa chọn. Vậy, màn hình EGA chỉ cho khả năng hiển thị 16 màu đồng thời từ 64 màu. Tín hiệu lựa chọn từ palette sẽ được gửi ngay ra màn hình. - Vỉ điều khiển màn hình VGA chế độ 256 màu: có bộ chuyển đổi DAC phát sinh tín hiệu Red, Green, Blue tuyến tính để gửi ra màn hình tương tự. Do vậy chúng có thể phát sinh số cường độ màu không giới hạn. Trên hình 2.3 cho thấy vỉ VGA còn có thêm thanh ghi chọn màu (Color Select Register) 2 bit để cho khả năng chọn 1 (16 thanh ghi màu) từ 4 nhóm (64 thanh ghi DAC). Mỗi thanh ghi DAC chứa 3 bộ dữ liệu 6 bit Red, Green và Blue. Điều này cho phép tổ hợp 1 từ 64 mức màu của từng bộ 3 màu, kết quả ta có 256 K màu. - Chế độ SVGA, chế độ 16 màu và vượt qua 800x600, thí dụ đạt tới 1024x768x16 hay 1280x1024 thì phải sử dụng chuyển băng nhớ. Lập trình viên chuyên nghiệp hay sử dụng phương pháp này. Nhưng bộ nhớ tổ chức thành planes tương tự như mô tả cho EGA trên đây. - VGA hay SVGA 256 màu: sử dụng một byte làm `mã` màu cho 1 pixel -> 2 8=256 màu. Địa chỉ khởi đầu: A000:0000h. Các pixel ghi liên tục. > dễ tính địa chỉ nhất. - SVGA HighColor: 2 bytes (16 bit) cho pixel, không có palette, hai bytes là mã màu chứa cường độ Red, Green và blue khác nhau; hai loại 32k và 64k color mode. Việc sử dụng số bit khác nhau của chế độ 64k màu vì lý do thực tế: mắt người nhạy cảm với màu green nhất. - SVGA TrueColor: 3 byte cho 1 pixel. Mỗi RGB có 8 bit, vậy: 224=16777216 màu đồng thời. 1.4.3 Chế độ làm việc của màn hình (Video Modes) Trong nhập môn tin học, khi tìm hiểu đại cương về máy tính đã được trao đổi về hai chế độ làm việc của màn hình máy tính: TEXT và GRAPH. Thực chất ngay trong từng chế độ (TEXT và GRAPH) màn hình máy tính lại có các mode khác nhau. Ở chế độ ngầm định (Default) màn hình làm việc ở chế độ văn bản (mode 2) khi đó màn hình được quản lý theo dòng và cột (25 dòng, 80 cột) ngay trong TEXT muốn màn hình hiển thị với chế độ khác, ví dụ (25 dòng, 40 cột) ta cũng phải đặt lại mode cho màn hình. Cũng như vậy khi làm việc với mục đích đồ hoạ trước hết ta phải chọn và đặt mode cho màn hình. Với mỗi mode cụ thể người dùng chọn đặt, bộ điều khiển sẽ thiết lập các thông số điều khiển cho phù hợp với tổ chức vật lý của màn hình. Mỗi loại màn hình chỉ phù hợp với một số mode nhất định. Nếu đặt sai mode màn hình thì hoặc màn hình không làm việc hoặc sẽ hiển thị sai hoặc không khai thác hết khả năng của màn hình. Nói như trên ở chế độ TEXT, màn hình được xem như một lưới ô vuông (thẳng hàng và thẳng cột), mỗi ô vuông trên lưới sẽ viết được 1 kí tự. Màn hình TEXT ở chế độ default chứa tất cả 2000 kí tự. Trang 32
  25. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Chế đồ đồ hoạ màn hình được lấp kín bởi các điểm (cũng thẳng hàng và thẳng cột), giả sử thông số kĩ thuật của màn hình tại mode nào đó là 200x320 (còn gọi là độ phân dải của màn hình) có nghĩa màn hình có 200 dòng, mỗi dòng có 320 điểm Có thể xem ở chế độ đồ hoạ màn hình là một lưới ô vuông (mau hơn rất nhiều so với chế độ TEXT) mà tại mỗi ô vuông trên lưới sẽ được phép hiển thị một điểm ảnh (pixel). Mỗi điểm trên màn hình được xác định bởi 2 thông số: vị trí dòng và vị trí cột. Điểm góc trên bên trái có toạ độ (0,0). Cặp trị (x,y) cho biết điểm trên dòng x và cột y của màn hình đồ hoạ. cột y toạ độ (0,0) dòng x toạ độ (x,y) Hình 1.20 Một góc màn hình Các mode màn hình của một số loại màn hình thông dụng: Mode TEXT GRAPH Số lượng màu Kích thước dòngxcột Loại màn hình 0 * 2 25x40 CGA,EGA 1 * 16 25x40 CGA,EGA 2 * 2 25x80 CGA,EGA 3 * 16 25x80 CGA,EGA 4 * 4 200x320 CGA,EGA 5 * 4 200x640 CGA,EGA 6 * 2 200x640 CGA,EGA 7 * 2 25x80 MA 8 * 16 200x160 PCjr 9 * 16 200x320 PCjr 10 * 4/16 200x640 PCjr, EGA 13 * 16 200x320 EGA 14 * 16 200x640 EGA 15 * 4 350x640 EGA Bảng 1.3 Các Mode màn hình 1.4.4 Bộ màu (Pallete) Mỗi mode màn hình lại được phép sử dụng mộ số bộ màu tương ứng. Số bộ màu tuỳ thuộc vào mode màn hình đã chọn. Ví dụ ở mode 4 (màn hình CGA,EGA) ta được phép sử dụng 2 bộ màu (palette) được gọi là (palette 0) và (palette 1). Mỗi palette lại cung cấp cho 4 màu (được mã 0, 1, 2, 3) trong đó 0 là màu nền và dùng cho cả 2 bộ màu. Bảng 1.4 MÃ MÀU PALETTE 0 PALETTE 1 0 Đen Đen 1 Vàng Xanh da trời 2 Đỏ Đỏ rực Trang 33
  26. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 3 Xanh lá cây Trắng Với mỗi mode trong khi vẽ cho phép thay đổi giữa các bộ màu. Tuỳ thuộc bộ màu và mã màu mà ta có màu cụ thể trên màn hình. Màu thể hiện trên màn hình phụ thuộc vào mode và bộ màu. Khi ra khỏi chương trình phải trả lại mode TEXT (mode 2). Lược đồ chung của mọi chương trình đồ hoạ: - Đặt mode - Chọn palette - Vẽ - Trả lại mode văn bản. 1.4.5 Hệ thống các thanh ghi của màn hình Bộ nhớ màn hình dùng để chứa thông tin hay dữ liệu của điểm ảnh. Để tạo ra màu sắc hiển thị điểm ảnh trên màn hình, màn hình còn có một hệ thống các thanh ghi (Register) tương đối phức tạp, các thanh ghi này cho phép người lập trình gián tiếp hoặc trực tiếp truy nhập, dưới đây chúng ta sẽ tìm hiểu sơ lược về hệ thống các thanh ghi của màn hình. Các thanh ghi của màn hình rất nhiều song có thể phân chia thành 6 nhóm cơ bản đó là các nhóm sau: 1. Nhóm general (External Register) 2. Nhóm Sequence Register 3. Nhóm CRTC Register 4. Nhóm Graphics Register 5. Attribute Register 6. Nhóm Color Register (Chỉ có ở VGA) Chú ý: Chỉ các thanh ghi của nhóm General và thanh ghi chọn màu (Color Select Register) của nhóm Attribute Register là có thể truy nhập trực tiếp vào nó thông qua cổng I/O nghĩa là người lập trình có thể dùng các lệnh In, Out để truy cập vào các thanh ghi này thông qua địa chỉ của cổng. Các thanh ghi còn lại được truy nhập gián tiếp thông qua thanh ghi địa chỉ (Address Register) và thanh ghi dữ liệu (Data Register) hai thanh ghi này có địa chỉ liên lạc thông qua địa chỉ cổng. Có thể minh hoạ: Các thanh ghi trong nhóm thanh ghi thuộc tính không truy nhập theo phương pháp trên, dùng cùng một địa chỉ cổng để lấy địa chỉ và dữ liệu ở địa chỉ 3C0 Hình 1.21 Các truy cập thông qua thanh ghi màn hình Trang 34
  27. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.4.5.1 Nhóm 1 (General hay External Register) Nhóm này có 4 thanh ghi có độ dài 8 bit, nhiệm vụ của các thanh ghi nhóm này là thiết lập trạng thái cách thức kiểm tra chế độ làm việc của màn hình nhóm 1 cho ở bảng sau: Tên thanh ghi Địa chỉ ghi vào (Write) Địa chỉ đọc ra Miscellaneous output 3C2 3CC Feature control 3DA/3BA 3CA Input Status #0 0 3C2 Input Status #1 3DA/3BA 3DA/3CA 1.4.5.2 Nhóm 2 (Sequencer Register) Nhóm này gồm 6 thanh ghi không có địa chỉ liên lạc với bộ nhớ, nó dùng một thanh ghi trong nhóm làm thành địa chỉ, thanh ghi này chứa chỉ số của thanh ghi trong nhóm cần truy nhập và một thanh ghi dữ liệu. Các thanh ghi của nhóm cho trong bảng sau: Tên thanh ghi Chỉ số thanh ghi Địa chỉ ghi vào Địa chỉ đọc ra address 3C4 3C4 Reset 0 3C5 3C5 Clock mode 1 3C5 3C5 Map mask 2 3C5 3C5 Character Map Mask 3 3C5 3C5 Memory mode 4 3C5 3C5 Trong số các thanh ghi của nhóm trên chúng ta quan tâm đến thanh ghi Map Mask thanh ghi này có nhiệm vụ xác định bit plane được truy cập. Các thanh ghi trong nhóm CRTC coi bộ nhớ màn hình là một dãy 32 bit. Một thanh ghi 32 bit được tạo ra để liên hệ giữa các thanh ghi trong nhóm CRTC và bộ nhớ màn hình. Mỗi lần đưa số liệu vào bộ nhớ màn hình 4 byte được đưa vào 4 bit plane. Thanh ghi Map Mask có nhiệm vụ xem bit plane nào được sửa đổi. Dạng của thanh ghi này như sau: 6 5 4 3 2 1 b3 b2 b1 b0 0 viÖc truy cËp bit plane kh«ng cho phÐp bj = 1 viÖc truy cËp bit plane cho phÐp 1.4.5.3 Nhóm 3 (CRTC) Nhóm này gồm 26 thanh ghi với EGA, 24 thanh ghi với VGA. Chức năng của nhóm này xác định các thông tin về số hàng, số cột, chiều cao, chiều rộng, của chế độ hiển thị Nó được truy cập thông qua thanh ghi địa chỉ và thanh ghi dữ liệu Các thanh ghi của nhóm này cho trong bảng sau: Tên gọi thanh ghi Chỉ số thanh ghi Địa chỉ ghi Địa chỉ đọc address 3D4/3B4 3D4/3B4 Horizontal Total 0 3D5/3B5 3D5/3B5 Horizontal Display end 1 nt nt Start horizontal Blank 2 nt nt end horizontal Blank 3 nt nt Start horizontal Retrace 4 nt nt end horizontal Retrace 5 nt nt Trang 35
  28. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính vertical total 6 nt nt overflow 7 nt nt preset row scan 8 nt nt max scan line 9 nt nt cursor start A nt nt cursor end B nt nt Start address high C nt nt Start address low D nt nt Cursor location hight E nt nt Cursor location low F nt nt Vertical Retrace start 10 nt nt Vertical Retrace low 11 nt nt Vertical Display end 12 nt nt offset 13 nt nt Underline location 14 nt nt Start Vertical Blank 15 nt nt End Vertical Blank 16 nt nt Mode control 17 nt nt Line compare 18 nt nt 1.4.5.4 Nhóm 4 (Graphics Controller Registers) Nhóm này gồm 9 thanh ghi các thanh ghi trong nhóm được truy cập thông qua thanh ghi địa chỉ và thanh ghi dữ liệu Tên gọi thanh ghi Chỉ số Địa chỉ ghi Địa chỉ đọc Graphics address 3CE 3CE Set/Reset 0 3cf 3cf Enable Set/Reset 1 3cf 3cf Color Compare 2 3cf 3cf data Rotate 3 3cf 3cf Read Map 4 3cf 3cf Mode 5 3cf 3cf Miscelaneous 6 3cf 3cf Color don't care 7 3cf 3cf Bit Map 8 3cf 3cf Các thanh ghi Set/Reset, Enable Set/Reset và các bitplan có sự tương ứng 1-1. Thanh ghi Set/Reset chứa khuôn mẫu cần ghi vào bit plane, enable Set/Reset chỉ ba bit plane nào cần được sửa 1.4.5.5 Nhóm 5: (Attribute controler Register) Nhóm này có 16 thanh ghi palette mỗi thanh ghi palette được sử dụng để chuyển dữ liệu từ bộ nhớ màn hình thành màu. Mỗi thanh ghi palett có độ dài 16 bit (nó tạo từ RAM) nó xác định giá trị tương ứng với pixel trong bộ nhớ màn hình. Đối với VGA các giá trị này lại là giá trị trỏ đến thanh ghi màu trong nhóm 256 thanh ghi màu. Khi hoạt động ở chế độ của VGA, thanh ghi palette chứa 6 bit, 6 bit này tạo ra địa chỉ để trỏ vào một trong 64 thanh ghi màu Nhóm này gồm 21 thanh (EGA có 20 thanh) các thanh ghi của nhóm cho ở bảng dưới đây: Tên thanh ghi Chỉ số Địa chỉ ghi vào Địa chỉ đọc ra address 3CO 3C1 Palette O F 3CO 3C1 Trang 36
  29. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Mode control 10 3CO 3C1 Overscan color 11 3CO 3C1 Color plane enable 12 3CO 3C1 Horizontal pixel paning 13 3CO 3C1 Color Select 14 3CO 3C1 Mã màu trong thanh ghi pallette tạo theo nguyên tắc sau: - 6 bit mã màu được chia thành hai nhóm - Nhóm màu cơ bản RGB (3 bit) - Nhóm màu thay đổi cường độ của màu tương ứng R1G1B1 (3 bit) Mỗi màu có 4 khả năng tạo từ các cặp R1R, G1G, B1B và do đó tất cả 64 màu. Các màu tạo ra theo tỉ lệ sau: (R1G1B1) (RGB) Cường độ kích hoạt 0 0 0% 0 1 33% 1 0 66% 1 1 100% 1.4.6 Các phương pháp truy nhập tới màn hình máy tính. 1.4.6.1 Phương pháp 1: Thông qua các thủ tục DOS. Đặc điểm: Chậm và không giúp hiểu được bản chất đồ hoạ. 1.4.6.2 Phương pháp 2: Thông qua các thủ tục của BIOS (Basic Input Output System). Đặc điểm: Nhanh, đặc biệt làm với các máy AT và PS/2 với những mảng đồ hoạ không lớn. Ví dụ: dùng thủ tục của BIOS để hiển thị một điểm trong Pascal, ta dùng hàm $0C ngắt $10: Procedure PutPixel(Col,Row:Word; Color:Byte); Var reg:Registers; Begin reg.ah:=$0C; reg.al:=Color; reg.bh:=0; reg.cx:=Col; reg.dx:=Row; Intr($10,reg); End; 1.4.6.3 Phương pháp 3: Truy nhập trực tiếp vùng nhớ màn hình. Đặc điểm: Nhanh, giúp hiểu rõ bản chất đồ hoạ, song phụ thuộc vào thiết bị (khi thay đổi thiết bị phải thay đổi đôi chỗ trong chương trình). Ví dụ: Giả sử một điểm (x,y) được vẽ trên màn hình với độ phân giải 320x200x256 (mode 13h), đ iểm đó sẽ được định vị trong vùng đệm bắt đầu từ địa chỉ segment A000h và địa chỉ offset được tính theo công thức: Offset = y*320 + x. Ta có thể viết thủ tục trong Pascal như sau: Trang 37
  30. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Procedure PutPixel(x,y:Word; Color:Byte); Var Offset:Word; Begin Offset:=(y shl 8) + (y shl 6) + x; Mem[$A000:Offset]:=Color; End; Phương pháp truy nhập trực tiếp tới vùng nhớ màn hình. Với chức năng quản lí bộ nhớ và các thiết bị ngoại vi, hệ điều hành (OS-Operating System) đã cắt ra một phần bộ nhớ RAM (Random Access Memory) để quản lý màn hình (gọi là vùng nhớ màn hình – Video Memory). Nếu người dùng đưa dữ liệu vào trong vùng nhớ này thì trên màn hình sẽ xuất hiện những điểm màu thích hợp tương ứng với dữ liệu đưa vào.Lý do: Card điều khiển màn hình luôn quét vùng nhớ nói trên để đọc dữ liệu trên đó và hiển thị tương ứng trên màn hình vật lý. Chính nhờ lí do này mà ta có thể truy cập trực tiếp đến vùng nhớ màn hình thay cho việc xử lí toạ độ các điểm trên màn hình vật lý. Hay nói cách khác phương pháp truy nhập trực tiếp là phương pháp truy nhập vào bộ nhớ màn hình. Bằng cách đó ta có thể tạm quên đi sự tồn tại của màn hình vật lý mà chỉ cần quan tâm đến vùng nhớ màn hình. Thông qua bộ nhớ màn hình ta luôn đọc được các điểm trên màn hình vật lý (thực chất là ta đọc nội dung dữ liệu tại địa chỉ tương ứng trong vùng nhớ màn hình). * Các chức năng chính của phương pháp truy nhập trực tiếp chính là các chức năng thao tác với bộ nhớ màn hình. Có hai chức năng thao tác bộ nhớ: đọc & ghi. - Ghi dữ liệu vào bộ nhớ VidMem (Video Memory) – tương ứng với việc vẽ trên màn hình. - Đọc dữ liệu trong VidMem – giúp ta nhận dạng được hình ảnh trên màn hình vật lý. 1.5 Quản lý màn hình theo mode đồ hoạ Việc quản lý màn hình theo mốt đồ hoạ có nhiều điểm khác biệt cơ bản so với mốt văn bản. Tổ chức bộ nhớ màn hình hoàn toàn khác. Ở mốt văn bản, đơn vị quản lý là theo byte (tổ chức bộ nhớ màn hình theo mốt văn bản gồm 4000byte thể hiện 2000 kí tự, mỗi kí tự 2 byte, 1 byte là bản thân kí tự cần thể hiện, byte tiếp theo là thuộc tính của kí tự đó). Trong mốt đồ hoạ, đơn vị theo bit. Với phương pháp truy nhập qua các thủ tục của BIOS đã trao đổi ở trên, có thủ tục cho phép bật, tắt từng bit tương ứng bật tắt từng điểm trên màn hình song tốc độ chậm, nhất là khi phải hiển thị nhiều thông tin. Để cải thiện về tốc độ, có 2 xu hướng tiếp cận: Can thiệp trực tiếp vào vùng nhớ màn hình đồ hoạ trong bộ nhớ (với mỗi vỉ màn hình ta biết được địa chỉ đầu của vùng nhớ này). Phương pháp này khá nhanh nhưng không khả chuyển, chương trình không thích nghi được khi thay đổi thiết bị. Để đảm bảo chương trình đồ hoạ đảm bảo được tốc độ mà vẫn khả chuyển thay vì can thiệp trực tiếp vào vùng nhớ thật của màn hình đồ hoạ ta can thiệp thông qua vùng nhớ ảo: ghi dữ liệu vào các bit trên vùng nhớ ảo, sau đó dùng movedata để chuyển dữ liệu từ vùng nhớ ảo vào vùng nhớ thật của màn hình đồ hoạ. Trang 38
  31. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính 1.5.1 Tổ chức màn hình theo mốt đồ hoạ CGA. Mỗi điểm trên màn hình được đặc trưng bởi 3 thuộc tính: - Toạ độ dòng x; Toạ độ cột y; Màu hiển thị c. Điểm có toạ độ (0,0) trên màn hình có địa chỉ chính là địa chỉ đầu trong VidMem (0xB8000000). Nếu biết được mỗi byte trong VidMem lưu trữ cho bao nhiêu điểm trên màn hình thì hiển nhiên khi biết toạ độ điểm(x,y) trên màn hình ta có thể tính được nó thuộc địa chỉ nào trong VidMem, và ngược lại với mỗi địa chỉ trong VidMem ta hoàn toàn có thể tính được nó lưu giữ dữ liệu cho những điểm nào trên màn hình. Điều đó cho khẳng định tại mỗi địa chỉ (mỗi byte) chứa thông tin cho một số điểm nào đó chỉ cần lưu trữ thông tin về màu cho các điểm đó. Với mode 4 ta thấy mỗi bộ màu chỉ gồm 4 màu được mã hoá 0, 1, 2, 3, tương ứng mã nhị phân 00, 01, 10, 11. Để mã hoá cho 4 màu chỉ cần 2 BIT (4=22=2n; n =2). Do đó để lưu giữ thông tin màu cho 1 điểm chỉ cần 2 BIT. 1Byte trong VidMem sẽ lưu giữ thông tin màu cho 4 điểm. Vậy với mode 4 màn hình CGA, EGA mỗi dòng có 320 điểm vậy để lưu trữ 320 điểm này (lưu giữ màu) cần 320:4=80byte. Hệ điều hành quản lý các điểm trong một byte VidMem thế nào? Trong mỗi byte các điểm sẽ được mã số từ 0->3, và thứ tự được tính từ trái qua phải. - Điểm 0 chiếm 2 BIT 7 và 6 - Điểm 1 chiếm 2 BIT 5 và 4 - Điểm 2 chiếm 2 BIT 3 và 2 - Điểm 3 chiếm 2 BIT 1 và 0 Theo quy định của phần cứng, vùng nhớ màn hình được quản lý thành 2 mảnh: mảnh của các dòng chẵn và mảnh của các dòng lẻ. 1.5.2 Các phép toán trên BIT và kĩ thuật mặt nạ. Trong C có 6 phép toán thao tác bit, được sắp theo thứ tự ưu tiên từ trái qua phải: ~, >>, <<, &, ^, | Phép toán phủ định. Kí hiệu: ‘~’. Đây là phép toán một ngôi – còn được gọi là phép toán đảo bit. Phép toán cho lại một giá trị nguyên (int , long) là phần bù 1 của toán hạng của nó. Giá trị của từng bit sau khi đi qua phép toán là giá trị đảo ngược của giá trị ban đầu. Phép toán hoặc. Kí hiệu ‘|’ . Trang 39
  32. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Khi thực hiện phép hoặc hai toán hạng, thực hiện từng cặp bit tương ứng (hai bit có cùng vị trí). Kết quả là 0 khi cả hai bit cùng giá trị 0, trong các trường hợp còn lại cho giá trị 1. Phép toán hoặc loại trừ. Kí hiệu ‘^’. Khi thực hiện phép hoặc loại trừ hai toán hạng, thực hiện từng cặp bit tương ứng (hai bit có cùng vị trí). Kết quả là 0 khi cả hai bit cùng giá trị, kết quả là 1 khi hai bit khác giá trị. Phép toán và. Kí hiệu ‘&’. Khi thực hiện phép và hai toán hạng, thực hiện từng cặp bit tương ứng (hai bit có cùng vị trí). Kết quả là 1 khi cả hai bit cùng có giá trị 1, kết quả là 0 trong các trường hợp còn lại. Phép toán dịch phải. Kí hiệu ‘>>’. Thực hiện việc chuyển dịch các bit trong toán hạng bên trái đi một số vị trí sang bên phải. Số lượng vị trí cần dịch chuyển được xác định trong toán hạng bên phải của phép toán này. Các vị trí dôi ra ở phần đầu của kết quả nhận giá trị 0. Phép toán dịch trái. Kí hiệu ‘ >=2 A=00000001 A<<=2 A=00010000 1.5.3 Tổ chức bộ nhớ màn hình (VidMem). Địa chỉ đầu của vùng nhớ màn hình 0xB8000000. Các điểm trên dòng chẵn lưu trữ bắt đầu từ địa chỉ này. Các điểm trên dòng lẻ lưu trữ bắt đầu từ địa chỉ cách địa chỉ đầu một khoảng DELTA = 8192 byte. Để việc xử lí dòng lẻ như xử lí dòng chẵn ta lùi lại 40 byte (bằng đúng nửa dòng điểm trên màn hình). #define DELTA 8152 Địa chỉ của byte đầu tiên của VidMem sẽ chứa trong 1 biến (ta đặt tên là VidMem) đây là biến thuộc kiểu con trỏ xa, có khai báo như sau: char far *VidMem = (char far *)0xB8000000; Trang 40
  33. Đại học Hải Phòng. Giảng viên: Lê Đắc Nhường Giáo trình Đồ họa máy tính Như trên đã trình bày nếu biết toạ độ (x,y) trên màn hình vật lí sẽ tính được địa chỉ của nó trong VidMem (thuộc byte thứ mấy?). Công thức liên quan giữa toạ độ (x,y) màn hình với địa chỉ bộ nhớ tính như sau: i = x * 40 + y/4 hoặc i = x*40 + (y>>2) (1) x*40 (chứ không phải x*80) là vì trong x dòng có một nửa số dòng là dòng lẻ. y/4 là vì mỗi byte chứa 4 điểm. Vậy byte i (trong công thức 1) là địa chỉ chứa điểm (x,y) trong VidMem. Byte i chứa 4 điểm, vậy điểm (x,y) là điểm nào trong byte i? Để trả lời câu hỏi này ta sử dụng công thức: p = y % 4 (2) Đặt v = VidMem ( char far *v = VidMem) Nếu x%2==0 (điểm thuộc dòng chẵn) thì: b = i + v là địa chỉ tuyệt đối của byte chứa điểm (x,y) Nếu x%2==1 (điểm thuộc dòng lẻ) thì: b = i + v + DELTA là địa chỉ tuyệt đối của byte chứa điểm (x,y). Thao tác: b>>2*(3-p) sẽ đẩy 2 BIT màu của điểm đang xét về đầu phải của byte. Còn nếu c là byte chứa màu nào đó, thì: c<<2*(3-p) sẽ đặt màu c chắn đúng điểm đang xét. Trang 41