Bài viết trước mình đã giới thiệu cho các bạn về OpenGL rồi, bạn đọc có thể đọc lại tại đây
Bài viết này mình sẽ liệt kê các Api trong OpenGL thông dụng nhất. Hi vọng có thể giúp ích được cho các bạn mới bắt đầu vào bộ môn này.

1. Khởi tạo chương trình dùng GLUT void glutInit(int *argc, char **argv); Tham số: argc va argv truyền vào từ hàm “main()
2. Thiết lập vị trí cửa sổ void glutInitWindowPosition(int x, int y). Tham số: tọa độ cửa sổ từ góc trái trên cùng
3. Thiết lập kích thước của sổ void glutInitWindowSize (int width, int height). Tham số: width - chiều rộng cửa sổ height – chiều dài cửa sổ
4. Thiết lập chế độ màn hình void glutInitDisplayMode(int mode). Tham số: mode – chế độ màn hình. Các kiểu chế độ được định nghĩa sẵn
- Chế độ màu sắc GLUT_RGBA (mặc định) GLUT_RGB GLUT_INDEX
- Chế độ rải (buffer mode) GLUT_SINGLE GLUT_DOUBLE
- Chế độ các kiểu rải GLUT_ACCUM GLUT_STENCIL GLUT_DEPTH
Để sử dụng các kiểu chế độ kết hợp với nhau, ta sử dụng toán tử bitwise OR (|).
Ví dụ: glutInitDisplayMode( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA ); tức là thiết lập chế độ màn hình cửa sổ sau kiểu chế độ rải kép ở RGBA
5. Thiết lập cửa sổ void glutCreateWindow(char* title). Tham số: title – tiêu đề của cửa sổ
6. Quy định hàm xử lý về màn hình (rendering) void glutDisplayFunc(void (*func)(void)). Tham số: (*func)() – con trỏ tới hàm xử lý render. Chú ý: bắt buộc phải có, không được truyền tham số vào NULL (gây ra crash)
7. Giữ màn hình chạy liên tục void glutMainLoop()
8. Hàm xử lý cửa sổ bị thay đổi void glutReshapeFunc(void (*func)(void)). Tham số: (*func)() – con trỏ tới hàm xử lý
9. Hàm xử lý khi cửa sổ ở chế độ tĩnh (Idle) void glutIdleFunc(void (*func)(void)). Tham số: (*func)() – con trỏ hàm xử lý
10. Hàm gọi trình xử lý rải đổi (double buffering) void glutSwapBuffers()
11. Hàm xử lý từ bàn phím với các ký tự nhận biết được dưới mã ASCII void glutKeyboardFunc(void (*func) (unsigned char key, int x, int y)). Tham số (*func)(unsignedchar key, int x, int y) – con trỏ hàm xử lý key – ký tự vào x – tọa độ x của chuột (hoành độ) y – tọa độ y của chuột (tung độ)
12. Hàm xử lý các ký tự trên bàn phím nhận biết được dưới mã ASCII void glutSpecialFunc(void (*func)(int key, int x, int y). Tham số: tương tự glutKeyboardFunc() nhưng key được định nghĩa sẵn bởi 1 trong số những mã sau:
GLUT_KEY_F1 F1 GLUT_KEY_F2 F2 ... GLUT_KEY_F12 F12 GLUT_KEY_LEFT Left function key GLUT_KEY_RIGHT Up function key GLUT_KEY_UP Right function key GLUT_KEY_DOWN Down function key GLUT_KEY_PAGE_UP Page Up function key
GLUT_KEY_PAGE_DOWN Page Down function key GLUT_KEY_HOME Home function key LUT_KEY_END End function key GLUT_KEY_INSERT Insert function key
13. Hàm xử lý các ký tự trên bàn phím dưới dạng tổ hợp (combination keys) int glutGetModifiers(). Gía trị trả về là 1 trong 3 phím được định nghĩa sẵn
GLUT_ACTIVE_SHIFT GLUT_ACTIVE_CTRL GLUT_ACTIVE_ALT
14. Thiết lập chế độ lặp đi lặp lại cho bàn phím (repeat key mode) int glutSetKeyRepeat(intrepeatMode). Tham số: repeatMode – được định nghĩa sẵn với 3 chế độ sau
GLUT_KEY_REPEAT_OFF GLUT_KEY_REPEAT_ON GLUT_KEY_REPEAT_DEFAULT
15. Một hàm khác tương tự glutSetKeyRepeat() và an toàn hơn int glutIgnoreKeyRepeat(intrepeatMode). Tham số: repeatMode – được định nghĩa với 2 giá trị 1 - tự động lặp (auto-repeat) 0 – dừng quá trình lặp (non-repeat)
16. Hàm kiểm tra nếu phím thường được nhả ra (key release) void glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y))
17. Tương tự glutKeyboardUpFunc() nhưng với những phím đặc biệt void glutSpecialUpFunc(void (*func)(int key, int x, int y))
18. Hàm xử lý sự kiện chuột void glutMouseFunc(void (*func)(int button, int state, int x, int y)). Tham số: (*func)(int button, int state, int x, int y) – con trỏ tới hàm xử lý chuột button – nút chuột được ẩn, được định nghĩa với 3 kiểu sau:
GLUT_LEFT_BUTTON
GLUT_RIGHT_BUTTON
GLUT_MIDDLE_BUTTON
state – trạng thái nút chuột được định nghĩa với 2 kiểu
GLUT_DOWN
GLUT_UP x – hoành độ của chuột y – tung độ của chuột
19. Hàm xử lý chuyển động chuột ở trạng thái động và trạng thái tĩnh void glutMotionFunc (void (*func)(int x, int y)) void glutPassiveMotionFunc(void (*func)(int x, int y))
20. Hàm kiểm tra hành vi chuột vào cửa sổ hay rời cửa sổ màn hình void glutEntryFunc(void (*func)(int state)). Tham sô: (*func)(int state) – con trỏ xử lý trạng thái chuột
state – trạng thái chuột so với cửa số, được định nghĩa với 2 kiểu
GLUT_LEFT
GLUT_ENTERED
21. Tạo menu int glutCreateMenu(void (*func)(int value)). Tham số: (*func)(int value) – con trỏ tới hàm xử lý tạo sự kiện menu
22. Thêm một item vào menu void glutAddMenuEntry(char* name, int value). Tham số: name – tên menu value – giá trị thiết lập để sử dụng khi gọi
23. Gán menu vào nút chuột void glutAttachMenu(int button). Tham số: button – nút chuột được gán vào menu, được định nghĩa với 3 kiểu ở trên
24. Gỡ menu ra khỏi nút void glutDetachMenu(int button) tương tự menu glutAttachMenu()
25. Xóa menu đi void glutDestroyMenu(int menuIdentifier) Tham số: menuIdentifier – id của menu khi tạo qua glutCreateMenu()

--