Professional Documents
Culture Documents
BG - MHH - Huong Dan Lap Trinh VSC - Bai 3
BG - MHH - Huong Dan Lap Trinh VSC - Bai 3
TRƯỜNG CƠ KHÍ
HANOI UNIVERSITY OF SCIENCE AND TECHNOLOGY
SCHOOL OF MECHANICAL ENGINEERING
Phần lập trình
Hanoi 2009-2022
Sơ đồ cấu trúc và
quy trình mô
phỏng Hệ Cơ điện
tử:
Bài 3
Visual Studio
LẬP TRÌNH ĐỒ HỌA 3D VỚI OPENGL
C++
CAD, Solidworks
Maple, Matlab
3 4
Mục tiêu Nội dung
Có hiểu biết cơ bản về thư viện đồ họa OpenGL 1. Giới thiệu OpenGL
Khởi tạo được các ứng dụng MFC sử dụng OpenGL 2. Các chương trình OpenGL
Nắm được một số khái niệm trong OpenGL 3. Các khái niệm cơ bản trong OpenGL
5 6
7 8
Các nhánh phát triển của OpenGL Thư viện hỗ trợ
OpenGL-ES (OpenGL for Embedded System) GLU (OpenGL Utility Library) là thư viện các hàm tiện ích cho
Là tập con của OpenGL OpenGL, Tập trung vào mapping giữa các hệ trục toạ độ và các loại
Sử dụng cho các hệ thống nhúng như smartphone, tablet, game kích thước màn hình.
console,... GLUT (OpenGL Utility Toolkit) là một thư viện nhằm giúp nhanh
WebGL (Web Graphics Library) chóng tạo ra các cửa sổ cũng như quản lý các sự kiện từ bàn phím,
Là thư viện render đồ hoạ 2D và 3D cho trình duyệt chuột. GLUT là một thành phần bổ sung để dễ dàng hơn trong việc
API cho JavaScript lập trình OpenGL.
Được viết dựa trên OpenGL-ES
Tương tác với GPU thông qua trình duyệt
9 10
11 12
Các bước tạo một project OpenGL đầu tiên 3. Chọn kiểu Template là Win32, kiểu project là Win32 Project
1. Mở Visual C++ 4. Chọn Application type là Window application, Chọn Empty project,
(Visual Studio 2012) Finish
2. Chọn menu
File/New/Project…
13 14
5. Thêm file mã nguồn vào project: 6. Add file opengl.cpp vào trong cửa sổ solution của project
Copy file opengl.cpp từ thư mục
• Chuột phải vào
…/data của lớp vào thư mục project chọn
chứa project Add/Existing
Item
15 16
• Chọn file 7. Thêm hai file opengl32.lib và glu32.lib vào project
opengl.cpp
từ thư mục Hai cách:
của project • Thêm vào
Additional
Dependencies
trong Setting của
Project
17 18
7. Thêm hai file opengl32.lib và glu32.lib vào project 7. Build chương trình (F7, Ctrl+Shift+B)
Hai cách: 8. Chạy chương trình (F5, Ctrl+F5)
• Thêm vào Additional
Dependencies trong
Setting của Project
• Hoặc thêm trực tiếp
file vào code
19 20
9. Sửa màu nền 2. Các chương trình OpenGL
10.Sửa màu vẽ Chương trình OpenGL trong MFC
glClearColor(0,0.5,1,0.5); glClearColor(0,0.5,1,0.5);
Chuẩn bị dữ liệu
21
28
Thêm các nội dung Thêm các nội dung
BOOL CMFCAView::PreCreateWindow(CREATESTRUCT& cs) void CMFCAView::OnDraw(CDC* /*pDC*/)
{ {
// TODO: Modify the Window class or styles here by modifying CMFCADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN; if (!pDoc)
return;
return CView::PreCreateWindow(cs); // TODO: add draw code for native data here
}
openGLInit.OnDraw();
}
29 30
31 32
Thêm các nội dung Thêm các nội dung
BOOL CMFCAView::OnEraseBkgnd(CDC* pDC) void CMFCAView::OnTimer(UINT_PTR nIDEvent)
{ {
// TODO: Add your message handler code here and/or call default // TODO: Add your message handler code here and/or call default
return TRUE; RedrawWindow();
return CView::OnEraseBkgnd(pDC); CView::OnTimer(nIDEvent);
} }
33 34
void CMFCAView::OnDestroy()
{
CView::OnDestroy();
// TODO: Add your message handler code here
KillTimer(openGLInit.m_nTimerID);
openGLInit.OnDestroy();
}
35 36
Biên dịch, chạy chương trình Thêm xử lý phần vẽ hình trong hàm OnDraw
37 38
Vẽ hình trong hàm OnDraw Tạo chuyển động cho hình ảnh
static int angle = 0;
glTranslated(4.5,1,0.0);
glRotatef(float(angle++),0.0f,0.0f,1.0f);
glTranslated(0, 0, ‐10);
39 40