Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
550,15 KB
Nội dung
GiớithiệuOpenGL
Các công cụ ĐHMT
Công cụ
Phần
cứng
Thiết bị ra
Thiết bị
vào
Phần
mềm
Hàm vẽ
cơ bản
Hàm với
qlý cửa sổ
Hàm về
máy quay
Đồ họa độc lập thiết bị
• Thư viện đồ họa độc lập thiết bị: cho phép sử
dụng tập hàm đồ họa chung chạy trên nhiều
hệ thống khác nhau.
OpenGL
Đồ họa độc lập thiết bị: OpenGL
• Cho phép cùng chương trình đồ họa chạy trên
nhiều máy khác nhau và cho ra kết quả hầu
như hoàn toàn giống nhau.
– Dùng các tệp .dll
• OpenGL như là một API: nó điều khiển phần
cứng bạn đang sử dujg và bạn chỉ cẩn dùng
các hàm của OpenGL thay vì điều khiển thiết
bị phần cứng trực tiếp.
• OpenGL là open source (free).
Chương trình hướng sự kiện
• Đáp ứng các sự kiệt như click, di chuyển
chuột, bấm phím, thay đổi kích cỡ cửa sổ. Hệ
thống quản lý sự kiện theo hàng đợi.
• Người lập trình cung cấp các hàm “call-back”
để điều khiển mỗi sự kiện.
• Hàm call-back phải được đăng kí với OpenGL
để OpenGL biết hàm nào điều khiển sự kiện
nào.
• Hàm đăng kí không gọi nó!
Cài đặt và cấu hình
• Files: .h, .lib, .dll
– Toàn bộ thư mục gl được đặt trong thư mục
Include của Visual C++
– Toàn bộ các tệp lib được đặt trong thư mục lib
của Visual C++
– Toàn bộ các tệp dll được đặt trong
C:\Windows\System32
Sử dụng OpenGL
• Includes:
– <windows.h>
– <gl/gl.h>
– <gl/glu.h>
– <gl/glut.h>
– <gl/glui.h> (nếu sử dụng)
Thư viện thêm vào thư mục include
• GL, câu lệnh bắt đầu với GL;
• GLUT, GL Utility Toolkit, mở cửa sổ, phát triển thực
đơn và quản lý sự kiện.
• GLU, GL Utility Library, cung cấp các hàm mức cao để
điều khiển các thao tác vẽ phức tạp.
• GLUI, User Interface Library, được tích hợp vào GLUT
library.
– Hàm GLUT phải có sẵn cho GLUI để thao tác được chính
xác.
– GLUI cung cấp các điều khiển và thực đơn phức tạp cho
các ứng dụng OpenGL
Sử dụng OpenGL
• Thay đổi project settings: Visual C++ 6.0
– Project /Settings
– Trong Object/library modules: thêm glui32.lib
glut32.lib glu32.lib opengl32.lib (dùng dấu cách
phân cách)
– Trong Project Options: thêm cùng tập các tệp .lib
– Đóng thực đơn Project và lưu workspace
Sử dụng OpenGL (2)
• Thay đổi project settings: Visual C++ .NET
2003
– Project/Properties/Linker/Command Line
– Thêm glui32.lib glut32.lib glu32.lib opengl32.lib
– Đóng thực đơn Project và lưu sự thay đổi
[...]... glVertex2i (150, 130); • glEnd(); • GL_POINTS hằng Open-GL (GL_LINES, GL_POLYGON, …) Hiển thị các điểm Hàm OpenGL Ví dụ về hàm OpenGL • glVertex2i (…) lấy một giá trị nguyên • glVertex2d (…) lấy một giá trị thực • OpenGL sử dụng kiểu dữ liệu của OpenGL Kiểu dữ liệu OpenGL suffix data type C/C++ type OpenGL type name b 8-bit integer signed char GLbyte s 16-bit integer Short GLshort i 32-bit integer int... của chương trình Vẽ các điểm trong OpenGL • Hệ trục tọa độ 0 đến 679 cho trục x và 0 đến 479 cho trục y • OpenGL vẽ dựa trên các đỉnh (vertices hoặc corners) Để vẽ một đối tượng trong OpenGL, đặt một danh sách các đỉnh trong glBegin và glEnd – Danh sách bắt đầu với glBegin(arg); và kết thúc với glEnd(); – Arg xác định đối tượng vẽ – glEnd() Gửi dữ liệu vẽ vào luồng OpenGL Ví dụ • glBegin (GL_POINTS);... GLuint,Glenum,GLbitfield Màu trong OpenGL • glColor3f(red, green, blue); // set drawing color – glColor3f(1.0, 0.0, 0.0); – glColor3f(0.0, 1.0, 0.0); – glColor3f(0.0, 0.0, 1.0); – glColor3f(0.0, 0.0, 0.0); – glColor3f(1.0, 1.0, 1.0); – glColor3f(1.0, 1.0, 0.0); – glColor3f(1.0, 0.0, 1.0); // red // green // blue // black // bright white // bright yellow // magenta Màu nền trong OpenGL • glClearColor (red,... scan controller y at (639, 0) geometric position 0 639 0 pixel at address [x,y] frame buffer spot at (x,y) convert pixel 479 value to color display surface y at (639, 479) x Mối liên hệ giữa các thiết bị (3) • Based on cathode ray tube (CRT) x scan controller y x red y green pixel value frame buffer (6 planes) spot blue DAC's electron beam guns deflection coils ... cp thành (x, y) Ví dụ: vẽ hình vuông • moveTo(4, 4); //move to starting corner • lineTo(-2, 4); • lineTo(-2, -2); • lineTo(4, -2); • lineTo(4, 4); //close the square Khung một chương trình // include OpenGL libraries void main() { glutDisplayFunc(myDisplay); // register the redraw function glutReshapeFunc(myReshape); // register the reshape function glutMouseFunc(myMouse); // register the mouse action . Giới thiệu OpenGL
Các công cụ ĐHMT
Công cụ
Phần
cứng
Thiết bị ra
Thiết bị
vào. tập hàm đồ họa chung chạy trên nhiều
hệ thống khác nhau.
OpenGL
Đồ họa độc lập thiết bị: OpenGL
• Cho phép cùng chương trình đồ họa chạy trên
nhiều