Bùi Minh Trường
Lập trình Opengl với thư viện AUX
(Tài liệu tham khảo của trường đại học wakayama Nhật)
4
6-Giao diện của cửa sổ và quản lý cửa sổ:
Với những chương trình chỉ cần vẽ đơn giản thì bạn có thể dùng các
chương trình trên, nhưng với các chương trình phức tạp sau này chúng ta
không thể viết như thể được nữa.Dưới đây tôi sẽ trình bày với các bạn cấu
trúc của chương trình trong opengl.
Trước hết là từ khoá CALLBACK, đối với các bạn đã lập trinh WIN API
thì có thể hiểu rõ được lệnh này, nhưng có thể nói đơn giản là khi sử dụng
thư viện AUX thì ta phải dùng từ khoá này để chỉ định nó.Các chương trình
bên trên chúng ta viết đều dùng lệnh Sleep(1000) để bắt window dừng lại
cho chúng ta theo dõi, sắp tới đây chúng ta sẽ làm một cách chuyên nghiệp
hơn là dùng hàm auxMailLoop() trong thân của hàm main() – hàm chính
của chương trình.Tham số của hàm này là con trỏ trỏ đến hàm mà chúng ta
vẽ , hiện thị những gì chúng ta muốn(trong chương trình này tham số chính
là hàm draw()).Điều gì sẽ xảy ra nếu người dùng thay đổi kích cỡ của cửa
sổ? Để thực hiên điều này chúng ta cũng dùng một hàm tương tự như hàm
auxMainLoop(),đó là hàm auxReshapeFunc(), tham số của nó cũng là con
trỏ chỉ đến hàm mà chúng ta có thể thay đôi thông số của cửa sổ, tham số
của nó trong chương trình này là hàm resize().Nếu bạn đã học qua về đồ
hoạ máy tính thì sẽ dễ dàng hiểu về toạ độ trong đồ hoạ, hàm
glLoadIdentity() có nhiệm vụ thiết định ma trận của toạ độ là ma trận đơn
vị.
Mã nguồn dưới đây sẽ cho chúng ta rõ hơn:
/*filename: interface.cpp*/
#ifdef unix
#include <GL/gl.h>
#include "aux.h"
#define CALLBACK