1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu OpenGL pot

35 175 2
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

Thông tin cơ bản

Tiêu đề Giới thiệu OpenGL pot
Trường học Đại học Mở Hà Nội
Chuyên ngành Khoa học máy tính
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 35
Dung lượng 550,15 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... Chương trình hướng sự kiện • Đáp ứng các sự kiệt như cli

Trang 1

Giới thiệu OpenGL

Trang 2

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

Trang 4

Đồ 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

Trang 5

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ó!

Trang 6

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

Trang 8

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

Trang 9

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

Trang 11

Lệnh vẽ cơ bản

• setPixel(x, y, color)

– Pixel tại (x, y) có màu color

– Tên khác: putPixel(), SetPixel(), hoặc drawPoint()

• line(x1, y1, x2, y2)

– Đường thằng giữa (x1, y1) và (x2, y2)

– Tên khác: drawLine() or Line()

Trang 12

Lệnh vẽ cơ bản (2)

• current position (cp), vị trí hiện tại

• moveTo(x,y) chuyển vị trí hiện tại đến (x, y)

• lineTo(x,y) vẽ đường thẳng từ vị trí hiện tại

đến (x, y) và thay đổi cp thành (x, y)

Trang 14

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 function glutMotionFunc(myMotionFunc); // register the mouse motion

function

glutKeyboardFunc(myKeyboard); // register the keyboard action

function

…perhaps initialize other things…

}

…all of the callback functions are defined here

Trang 15

– Khi không có sự kiện gì xảy ra việc vẽ lại chỉ cần sử dụng

void myIdle() {glutPostRedisplay();}

Trang 16

Hàm Callback (2)

• glutMouseFunc(myMouse);

– Handles mouse button presses Knows mouse

location and nature of button (up or down and which button)

• glutMotionFunc(myMotionFunc);

– Handles case when the mouse is moved with one

or more mouse buttons pressed

Trang 17

– Chạy liên tục và chờ các sự kiện xảy ra Khi có sự kiện xảy

ra, thì tham chiếu đến hàm callback tương ứng

Trang 18

GLUT_RGB); // set the display mode

glutInitWindowSize(640,480); // set window size glutInitWindowPosition(100, 150);

// set window upper left corner position on screen glutCreateWindow("my first attempt");

// open the screen window (Title: my first attempt)

Trang 19

• Terminate program by closing window(s) it is using

Trang 21

Giải thích (2)

• glutInitWindowPosition (100, 150) vị trí của góc trên bên trái của cửa sổ

• glutCreateWindow (“my first attempt”) Mở cửa sổ có tên “my first attempt”

Trang 22

Kết quả của chương trình

Trang 23

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

Trang 25

Hiển thị các điểm

Trang 26

Hàm OpenGL

Trang 27

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

Trang 28

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 or long GLint, GLsizei

f 32-bit float Float GLfloat, GLclampf

d 64-bit float Double GLdouble,GLclampd

GLuint,Glenum,GLbitfield

Trang 29

Màu trong OpenGL

// set drawing color

– glColor3f(1.0, 0.0, 0.0); // red

– glColor3f(0.0, 1.0, 0.0); // green

– glColor3f(0.0, 0.0, 1.0); // blue

– glColor3f(0.0, 0.0, 0.0); // black

– glColor3f(1.0, 1.0, 1.0); // bright white

– glColor3f(1.0, 1.0, 0.0); // bright yellow

– glColor3f(1.0, 0.0, 1.0); // magenta

Trang 30

Màu nền trong OpenGL

• glClearColor (red, green, blue, alpha);

Trang 32

Vẽ đường thẳng

• glBegin (GL_LINES); //draws one line

– glVertex2i (40, 100); // between 2 vertices

– glVertex2i (202, 96);

• glEnd ();

• glFlush();

• Nếu có hơn 2 đỉnh trong cặp

glBegin(GL_LINES) và glEnd() chúng được

ghép thành cặp và từng đoạn thẳng tách rời sẽ được vẽ nối giữa các cặp này

Trang 33

Mối liên hệ giữa các thiết bị

Trang 34

Mối liên hệ giữa các thiết bị (2)

x y

x y

spot at (x,y)

geometric position logical

address

at (639, 0)

at (639, 479)

convert pixel value to color

Trang 35

Mối liên hệ giữa các thiết bị (3)

• Based on cathode ray tube (CRT)

y x

deflection coils

electron beam guns

red green

pixel

value

Ngày đăng: 23/03/2014, 11:21

w