![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Lập trình Opengl với thư viện AUX – Phần 4
Số trang: 19
Loại file: pdf
Dung lượng: 0.00 B
Lượt xem: 17
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chuột: Trong các trò chơi ta đều thấy sự quan trọng của việc sử dụng chuột, trong phần này chúng ta sẽ xem xét làm thế nào để chương trình chúng ta nhận ra chúng ta đang bấm trái chuột, chúng ta đang di chuyển chuột. Để làm được điều này chúng ta sử dụng hàm auxMouseFunc().
Nội dung trích xuất từ tài liệu:
Lập trình Opengl với thư viện AUX – Phần 4 Lập trình Opengl với thư viện AUX – Phần 4 8-Chuột: Trong các trò chơi ta đều thấy sự quan trọng của việc sử dụng chuột,trong phần này chúng ta sẽ xem xét làm thế nào để chương trình chúng tanhận ra chúng ta đang bấm trái chuột, chúng ta đang di chuyển c huột. Đểlàm được điều này chúng ta sử dụng hàm auxMouseFunc().Dưới đây là mãnguồn của chương trình mouse1.cpp /*filename mouse1.cpp*/ #ifdef unix #include #include aux.h #define CALLBACK #else #include #include #include #includestdio.h /*nếu bạn không có dòng này thì hàm printf()không thực hiện*/ #endif GLvoid CALLBACK draw(void){ glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); glColor3d(1.0,0.0,0.0); glVertex2d(0.1,0.1); glColor3d(0.0,1.0,0.0); glVertex2d(0.9,0.1); glColor3d(0.0,0.0,1.0); glVertex2d(0.9,0.9); glColor3d(1.0,0.0,1.0); glVertex2d(0.1,0.9); glEnd(); glFlush(); } GLvoid CALLBACK left(AUX_EVENTREC *event) { printf(%d,%d ,event->data[AUX_MOUSEX],event->data[AUX_MOUSEY]);}GLvoid CALLBACK resize(GLsizei w,GLsizei h){glLoadIdentity();glViewport(0,0,w/2,h/2);glOrtho(-1.0,1.0,-1.0,1.0,0.0,1.0);}int main(int argc, char *argv[]){auxInitPosition(200,100,640,480);auxInitDisplayMode(AUX_RGBA);auxInitWindow(argv[0]);auxReshapeFunc(resize); /*hàm mới*/ auxMouseFunc(AUX_LEFTBUTTON,AUX_MOUSEDOWN,left); /*hàm mới*/ auxMainLoop(draw); return 0; } Trong chương trình trên , chúng ta thấy xuất hiện hàm left() và hàmauxMouseFunc().Hàm auxMouseFunc() có gọi đến hàm left(), nó có ý nghĩarằng, khi chuột được bấm thì sẽ thực hiện hàm left().Trong tham số của hàmauxMouseFunc() có các tham sô sau: tham số đầu tiên nói đến phần nào củachuột được tác động, tham số thứ 2 nói đến nó được tác động như thế nào,và tham số cuối cùng muốn nói tác động rồi thì làm gì.Trong hàm left() thamsố có dạng con trỏ và có kiểu là AUX_EVENTREC, nó lấy dữ liệu về toạ độx và y của chuột.Trong một chương trình không phải là chỉ có một hàmauxMouseFunc() mà bạn có thể dùng bao nhiêu tuỳ thích, miễn là đừng vachạm nhau là được, trong phần mã nguồn tôi có cho thêm một chương trìnhví dụ về cách dùng 2 lần hàm auxMouseFunc()(trong file mouse2.cpp) Dưới đây tôi sẽ trình bày một chương trình khá thú vị , mã nguồn củanó như sau: /*filename connectlines.cpp*/ #ifdef unix #include #include aux.h #define CALLBACK #else #include #include #include #includestdio.h #endif GLvoid CALLBACK draw(void){ } GLvoid CALLBACK left(AUX_EVENTREC *event) { static int flag=0; static GLint x,y; if(flag){ glColor3d(0.0,0.0,0.0); glBegin(GL_LINE_STRIP); glVertex2i(x,y); glVertex2i(event->data[AUX_MOUSEX],event->data[AUX_MOUSEY]); glEnd(); glFlush(); }x=event->data[AUX_MOUSEX];y=event->data[AUX_MOUSEY];flag=1;}GLvoid CALLBACK resize(GLsizei w,GLsizei h){glLoadIdentity();glViewport(0,0,w,h);glOrtho(0.0,(GLdouble)w,(GLdouble)h,0.0,0.0,1.0);/* đổi thông số*/glClearColor(1.0,1.0,1.0,0.0); /*chuyển vị trí 2 hàm này*/glClear(GL_COLOR_BUFFER_BIT);}int main(int argc, char *argv[]) { auxInitPosition(200,100,640,480); auxInitDisplayMode(AUX_RGBA); auxInitWindow(argv[0]); auxReshapeFunc(resize); auxMouseFunc(AUX_LEFTBUTTON,AUX_MOUSEDOWN,left); auxMainLoop(draw); return 0; } Thực ra chương trình này rất dễ hiểu, có lẽ không phải trình bày gìnhiều.Nó lưu cá điểm lại và nối thành một đường gấp khúc.Nhược điểm củachương trình trên hẳn các bạn đã rõ khi biên dịch nó.Nó không vẽ lại cửa sổcủa bạn khi cửa sổ của bạn bị che bởi một cửa sổ khác, hay bị minimize, tứclà hình mà bạn muốn vẽ không được gửi tới hàm draw().Vì vậy bạn phải lưunhững điểm đã chọn và vẽ lại chúng trong hàm draw().Dưới đây là mãnguồn:/*filename connectlines1.cpp*/#ifdef unix#include #include aux.h#define CALLBACK#else#include#include#include#endif#define MAXPOINTS 100 /*số điểm tối đa có thể được chọn*/GLint point[MAXPOINTS][2]; /*mảng lưu trữ các điểm đó*/ /*số điểm đã chọn đến thời điểm hiện tại*/int num=0;GLvoid CALLBACK draw(void){int i;if(num>=2){ glClearColor(1.0,1.0,1.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3d(0.0,0.0,0.0); glBegin(GL_LINE_STRIP ...
Nội dung trích xuất từ tài liệu:
Lập trình Opengl với thư viện AUX – Phần 4 Lập trình Opengl với thư viện AUX – Phần 4 8-Chuột: Trong các trò chơi ta đều thấy sự quan trọng của việc sử dụng chuột,trong phần này chúng ta sẽ xem xét làm thế nào để chương trình chúng tanhận ra chúng ta đang bấm trái chuột, chúng ta đang di chuyển c huột. Đểlàm được điều này chúng ta sử dụng hàm auxMouseFunc().Dưới đây là mãnguồn của chương trình mouse1.cpp /*filename mouse1.cpp*/ #ifdef unix #include #include aux.h #define CALLBACK #else #include #include #include #includestdio.h /*nếu bạn không có dòng này thì hàm printf()không thực hiện*/ #endif GLvoid CALLBACK draw(void){ glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); glColor3d(1.0,0.0,0.0); glVertex2d(0.1,0.1); glColor3d(0.0,1.0,0.0); glVertex2d(0.9,0.1); glColor3d(0.0,0.0,1.0); glVertex2d(0.9,0.9); glColor3d(1.0,0.0,1.0); glVertex2d(0.1,0.9); glEnd(); glFlush(); } GLvoid CALLBACK left(AUX_EVENTREC *event) { printf(%d,%d ,event->data[AUX_MOUSEX],event->data[AUX_MOUSEY]);}GLvoid CALLBACK resize(GLsizei w,GLsizei h){glLoadIdentity();glViewport(0,0,w/2,h/2);glOrtho(-1.0,1.0,-1.0,1.0,0.0,1.0);}int main(int argc, char *argv[]){auxInitPosition(200,100,640,480);auxInitDisplayMode(AUX_RGBA);auxInitWindow(argv[0]);auxReshapeFunc(resize); /*hàm mới*/ auxMouseFunc(AUX_LEFTBUTTON,AUX_MOUSEDOWN,left); /*hàm mới*/ auxMainLoop(draw); return 0; } Trong chương trình trên , chúng ta thấy xuất hiện hàm left() và hàmauxMouseFunc().Hàm auxMouseFunc() có gọi đến hàm left(), nó có ý nghĩarằng, khi chuột được bấm thì sẽ thực hiện hàm left().Trong tham số của hàmauxMouseFunc() có các tham sô sau: tham số đầu tiên nói đến phần nào củachuột được tác động, tham số thứ 2 nói đến nó được tác động như thế nào,và tham số cuối cùng muốn nói tác động rồi thì làm gì.Trong hàm left() thamsố có dạng con trỏ và có kiểu là AUX_EVENTREC, nó lấy dữ liệu về toạ độx và y của chuột.Trong một chương trình không phải là chỉ có một hàmauxMouseFunc() mà bạn có thể dùng bao nhiêu tuỳ thích, miễn là đừng vachạm nhau là được, trong phần mã nguồn tôi có cho thêm một chương trìnhví dụ về cách dùng 2 lần hàm auxMouseFunc()(trong file mouse2.cpp) Dưới đây tôi sẽ trình bày một chương trình khá thú vị , mã nguồn củanó như sau: /*filename connectlines.cpp*/ #ifdef unix #include #include aux.h #define CALLBACK #else #include #include #include #includestdio.h #endif GLvoid CALLBACK draw(void){ } GLvoid CALLBACK left(AUX_EVENTREC *event) { static int flag=0; static GLint x,y; if(flag){ glColor3d(0.0,0.0,0.0); glBegin(GL_LINE_STRIP); glVertex2i(x,y); glVertex2i(event->data[AUX_MOUSEX],event->data[AUX_MOUSEY]); glEnd(); glFlush(); }x=event->data[AUX_MOUSEX];y=event->data[AUX_MOUSEY];flag=1;}GLvoid CALLBACK resize(GLsizei w,GLsizei h){glLoadIdentity();glViewport(0,0,w,h);glOrtho(0.0,(GLdouble)w,(GLdouble)h,0.0,0.0,1.0);/* đổi thông số*/glClearColor(1.0,1.0,1.0,0.0); /*chuyển vị trí 2 hàm này*/glClear(GL_COLOR_BUFFER_BIT);}int main(int argc, char *argv[]) { auxInitPosition(200,100,640,480); auxInitDisplayMode(AUX_RGBA); auxInitWindow(argv[0]); auxReshapeFunc(resize); auxMouseFunc(AUX_LEFTBUTTON,AUX_MOUSEDOWN,left); auxMainLoop(draw); return 0; } Thực ra chương trình này rất dễ hiểu, có lẽ không phải trình bày gìnhiều.Nó lưu cá điểm lại và nối thành một đường gấp khúc.Nhược điểm củachương trình trên hẳn các bạn đã rõ khi biên dịch nó.Nó không vẽ lại cửa sổcủa bạn khi cửa sổ của bạn bị che bởi một cửa sổ khác, hay bị minimize, tứclà hình mà bạn muốn vẽ không được gửi tới hàm draw().Vì vậy bạn phải lưunhững điểm đã chọn và vẽ lại chúng trong hàm draw().Dưới đây là mãnguồn:/*filename connectlines1.cpp*/#ifdef unix#include #include aux.h#define CALLBACK#else#include#include#include#endif#define MAXPOINTS 100 /*số điểm tối đa có thể được chọn*/GLint point[MAXPOINTS][2]; /*mảng lưu trữ các điểm đó*/ /*số điểm đã chọn đến thời điểm hiện tại*/int num=0;GLvoid CALLBACK draw(void){int i;if(num>=2){ glClearColor(1.0,1.0,1.0,0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3d(0.0,0.0,0.0); glBegin(GL_LINE_STRIP ...
Tìm kiếm theo từ khóa liên quan:
Lập trình Opengl thư viện AUX tự học tin học tin học căn bản sử dụng máy tính vi tính cho văn phòngTài liệu liên quan:
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 327 0 0 -
Sửa lỗi các chức năng quan trọng của Win với ReEnable 2.0 Portable Edition
5 trang 226 0 0 -
Xử lý tình trạng máy tính khởi động/tắt chậm
4 trang 220 0 0 -
Hướng dẫn xử lý một số lỗi quan trọng máy tính
3 trang 205 0 0 -
Giáo Trình tin học căn bản - ĐH Marketing
166 trang 199 0 0 -
Tải video YouTube chất lượng gốc
4 trang 196 0 0 -
Hướng dẫn cài đặt và sử dụng từ điển Việt Anh Lingoes
3 trang 193 0 0 -
Phục hồi mật khẩu đăng nhập windowsNếu chính chủ nhân của chiếc máy tính
3 trang 187 0 0 -
Giới thiệu tổng quan về SharePoint 2007
41 trang 181 0 0 -
TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KHAI BÁO HẢI QUAN ĐIỆN TỬ phần 1
18 trang 168 0 0