Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
0,95 MB
Nội dung
OPENGLGiớithiệuvàtổngquanthưviênOpenGLvàGLUTGiớithiệuOpenGL • OpenGL (Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa có mục đích định ra một giao diện lập trình ứng dụng (API) đồ họa ba chiều. OpenGL cũng có thể được dùng trong các ứng dụng đồ họa 2 chiều. Giao diện lập trình này chứa khoảng 250 hàm để vẽ các cảnh phức tạp từ những hàm đơn giản. Nó được dùng rộng rãi trong các trò chơi điện tử. Ngoài ra nó còn được dùng ứng dụng CAD, thực tại ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi. • OpenGL còn một đối thủ cạnh tranh là DirectX của Microsoft Không gian trong OpenGL • Không gian trong OpenGL được miêu tả qua hình học xạ ảnh. Một điểm trong không gian này có tất cả 4 tọa độ. Cách thể hiện các điểm trong không gian bằng 4 tọa độ cho phép xử lý các điểm vô tận một cách tổng quát. Vì vậy mã nguồn các ứng dụng đã được đơn giản hóa đi nhiều. Thiết kế • OpenGL được thiết kế nhằm thỏa mãn mục đích chính sau: – Che dấu sự tuơng tác phức tạp với các bộ máy xúc tiến 3 chiều bằng cách đưa ra một giao diện lập trình thống nhất. – Che dấu các sự khác biệt giữa các phần cứng 3 chiều bằng cách bắt buộc các phần cứng tương thích OpenGL phải hỗ trợ tất cả các chức năng của giao diện OpenGL. Nếu cần, các chức năng chưa được hỗ trợ đầy đủ bởi phần cứng có thể được hỗ trợ bằng phần mềm. Các thao tác OpenGL cơ bản là nhận các nguyên hàm hình học như điểm, đường thẳng và đa giác rồi chuyển thành các điểm đồ họa (pixel) trên màn hình. Những thứOpenGL không hỗ trợ • Bản thân OpenGL không có sẵn các hàm nhập xuất hay thao tác trên window • OpenGL không có sẵn các hàm cấp cao để xây dựng các mô hình đối tượng, thay vào đó, người dùng phải tự xây dựng từ các thành phần hình học cơ bản ( điểm, đoạn thẳng, đa giác). Rất may là một số thưviện cung cấp sẵn một số hàm cấp cao được xây dựng nên từ OpenGL. GLUT (OpenGL Utility Toolkit) là một trong số đó và được sử dụng rộng rãi. Trong tài liệu này, chúng ta sẽ sử dụng chủ yếu là OpenGLvà GLUT. Các trò chơi được viết với OpenGL • Hẳn các bạn đều biết game này? – Half-Life – Warcraft 3 – World of Warcraft – CounterStrike 1.6 – America's Army – City of Villains – Serious Sam – ………… Hình ảnh Khúc xạ dùng OpenGL Trò chơi dùng OpenGL Kết cấu di dộng dùng OpenGL Tài liệu tham khảo • GLSL - Ngôn ngữ chuyển màu OpenGL • Cg - Ngôn ngữ chuyển màu của hãng nVidia dùng cho OpenGL • Java OpenGL - OpenGL cho JavaOpenGL • ES - OpenGL for embedded systems • OpenAL - Thưviện âm thanh tự do thiết kế với mục địch dùng chung với OpenGL. • OpenSL ES - Một thưviện âm thanh khác • Graphics pipeline [...].. .Thư viện hỗ trợ OpenGL • GLUT - Thư viện công cụ cho OpenGL • GLU - Thưviện hàm cho các ứng dụng OpenGL Các giao diện lập trình đồ họa khác • Mesa 3D - Một thưviện thực thi OpenGL mã nguồn mở • Direct3D - Thưviện đồ họa của Microsoft • Light Weight Java Game Library • VirtualGL OpenGL Utility Toolkit (GLUT) • Để khắc phục một số nhược điểm của OpenGL, GLUT được tạo ra với với... Cấu trúc chương trình openGL đơn giản • Xét hàm main sau: int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_ SINGLE | GLUT_ RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutMainLoop(); return 0; } Khởi tạo - glutInit • Điều đầu tiên chúng ta cần làm là gọi glutInit() làm thủ tục... đặt OpenGL Cài đặt trên Windows Cài đặt trên Mac OS X Cài đặt trên Linux Cài đặt môi trường Linux • Chuẩn bị thư viện: – Copy file thưviện của OpenGL vào thư mục /usr/include/GL/ – Cài đặt thưviệnglut cho hệ thống: Sudo apt-get install freeglut3-dev • Cài đặt trình biên dịch C/C++ GNU: tại terminal gõ Sudo apt-get install g++ • Tạo file code C++ (.CPP) • Compile và run Cài đặt trên Windows và Visual... GLUT_ SINGLE hoặc đệm đôi GLUT_ DOUBLE • Cuối cùng, bạn phải quyết định xem bạn muốn sử dụng một bộ đệm chiều sâu GLUT_ DEPTH, đệm stencil GLUT_ STENCIL và / hoặc đệm một sự tích lũy GLUT_ ACCUM glutInitWindowSize() • Hàm này sử dụng tạo kích thức của cửa sổ, trong cửa số màn hình với tham số truyền vào là chiều cao và chiều rộng tính bằng pixcel glutInitWindowPosition() • Hàm glutInitWindowPosition()... tượng GLUT nào bởi vì nó khởi tạo thưviệnGLUT • argc, argv là 2 đối số dòng lệnh của hàm main glutInitDisplayMode() • Điều tiếp theo chúng tôi cần làm là gọi glutInitDisplayMode() làm thủ tục để xác định chế độ hiển thị cho cửa sổ.Bạn phải quyết định xem bạn muốn sử dụng một RGBA GLUT_ RGBA hoặc màu chỉ số GLUT_ INDEX mô hình màu • Khi thiết lập chế độ hiển thị là liệu bạn muốn sử dụng đệm đơn GLUT_ SINGLE... sổ - glutCreateWindow() • Để thực sự tạo ra một cửa sổ, với các thiết lập đặc điểm trước đó (hiển thị chế độ, kích thư c, vị trí, vv), sử dụng glutCreateWindow() để khởi tạo Lệnh này có một chuỗi như một tham số mà có thể xuất hiện trong thanh tiêu đề nếu hệ thống cửa sổ bạn đang sử dụng hỗ trợ nó cửa sổ là không thực sự hiển thị cho đến khi glutMainLoop() được nhập vào Chức năng hiển thị • Hàm glutDisplayFunc()... thúc bằng chữ v, cho biết các đối số được cho dưới dạng vecter Các tiền tố trong OpenGLThưviện Bộ hạt nhân Utility Auxiliary WGL Win32 API Tiền tố gl Aux Wgl Không có tiền tố đặc biệt glu Xét một chương trình OpenGL tối thiểu • Xét đoạn mã sử dụng các hàm OpenGL để tạo một đoạn thẳng mầu trắng và nền đen: void ve_DoanThang _OpenGL( ){ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT);... trình sẽ có thể xử lý các sự kiện như chúng xảy ra (click chuột, thay đổi kích thư c cửa sổ, vv.) Ngoài ra, gọi lại hiển thị (từ glutDisplayFunc()) được kích hoạt Sau khi vòng lặp này được nhập vào, nó không bao giờ đã thoát! Bảng dữ liệu, hậu tố trong OpenGL Hậu tố Kiểu dữ liệu Tương ứng kiểu dữ liệu C Tương ứng kiểu dữ liệu OpenGL B 8-bit integer signed char Glbyte S 16-bit integer Short Glshort I 32-bit... or unsigned long GLuint, GLenum, GLbitfield Cú pháp đặt tên • glColor3f(…) = gl Color 3 f(…) Thưviện Hàm cơ bản Số lượng đối sô Kiểu dữ liệu • Ví dụ lệnh glVertex2f() có hậu tố, cho biết đối số là 2 dấu chấm động • Tương tự, OpenGL đặt tên các hằng số bắt đầu bằng GL_ và các từ tiếp sau đều được viết hoa và cách nhau bởi dấu ‘_’ ví dụ: GL_COLOR_BUFFER_BIT Các kiểu glVertex • glVertex có đến 24 dạng:... Hàm glutDisplayFunc() làm thủ tục là sự kiện quan trọng đầu tiên của hầu hết các chức năng gọi lại và hiển thị Một chức năng gọi lại là một trong những nơi hàm đã được định nghĩa,ứng với mỗi hàm sẽ có một sự kiện phù hợp Chức năng định lại hình • glutReshapeFunc() hàm này được gọi bất cứ khi nào cửa sổ thay đổi hay di chuyển Vòng lặp chính • Cuối là gọi glutMainLoop() Tất cả các cửa sổ đã được tạo . OPENGL Giới thiệu và tổng quan thư viên OpenGL và GLUT Giới thiệu OpenGL • OpenGL (Open Graphics Library) là một tiêu chuẩn kỹ thuật. pipeline Thư viện hỗ trợ OpenGL • GLUT - Thư viện công cụ cho OpenGL • GLU - Thư viện hàm cho các ứng dụng OpenGL Các giao diện lập trình đồ họa khác • Mesa 3D - Một thư viện thực thi OpenGL. OpenGL. GLUT (OpenGL Utility Toolkit) là một trong số đó và được sử dụng rộng rãi. Trong tài liệu này, chúng ta sẽ sử dụng chủ yếu là OpenGL và GLUT. Các trò chơi được viết với OpenGL •