2012-09-11 26 views
8

Tôi đọc qua một "Bắt đầu với OpenGL" hướng dẫn và tôi đi qua văn bản này:Bao gồm OpenGL Libraries trong C++, Windows 7

"Nếu bạn đang sử dụng C/C++, sau đó trước tiên bạn phải thiết lập lập một môi trường xây dựng (dự án Visual Studio, GNU makefile, tệp CMake, v.v.) có thể liên kết đến OpenGL. Trong Windows, bạn cần liên kết tĩnh với một thư viện có tên OpenGL32.lib (lưu ý rằng bạn vẫn liên kết đến OpenGL32.lib nếu bạn đang xây dựng một thực thi 64-bit. Phần "32" là vô nghĩa) Visual Studio, và hầu hết các trình biên dịch Windows, đi kèm với thư viện này. "

Tôi chỉ đang cố gắng viết các tệp nguồn bằng vim, tôi không muốn sử dụng IDE như VS và từ sự hiểu biết của tôi về thư viện OpenGL đi kèm với Windows 7 (đúng nếu tôi sai) . Sau thời điểm này bài viết không thực sự đi sâu vào bất kỳ chi tiết nào về cách bao gồm các thư viện OpenGL, và câu hỏi thực sự của tôi là, làm cách nào để đưa vào và sử dụng các thư viện OpenGL trong các tệp nguồn của tôi?

Đơn giản như viết #include <name of lib> hoặc tôi có cần làm gì khác với môi trường Lập trình của mình như chỉnh sửa biến đường dẫn của tôi không?

Chỉnh sửa: Tôi đang sử dụng MinGW g ++/gcc biên dịch

+0

Bạn sẽ sử dụng trình biên dịch nào? –

+0

Nó phụ thuộc vào trình liên kết được sử dụng, bạn có đang sử dụng Visual Studio không? Makefile? CMake? thứ gì khác? – dutt

+2

Các tiêu đề chắc chắn không đi kèm với Windows chính nó, nhưng trình biên dịch của bạn nên có chúng. Nếu bạn đang ở trong vim, bạn sẽ cần cung cấp tiêu đề và thư viện làm đối số cho trình biên dịch và trình liên kết. Nếu bạn đang sử dụng make, điều đó sẽ xảy ra trong quá trình tạo tệp, nếu không bạn sẽ cần phải thực hiện thủ công. – ssube

Trả lời

5

Để có được quyền truy cập vào các tập tin bao gồm, bạn cần một thư viện hỗ trợ đặc biệt. Có nhiều hơn một trong số này, nhưng tôi muốn giới thiệu GLEW. Bạn có thể tìm thấy giao diện GLEW tại http://glew.sourceforge.net/.

Lý do cho điều này là chỉ có một phiên bản rất cũ của tiêu đề OpenGL có sẵn như mặc định trên Windows. Giao diện mới hơn có sẵn gián tiếp; bạn phải hỏi địa chỉ hàm. Tuy nhiên, điều này được thực hiện bởi GLEW cho bạn.

Vì vậy, bạn chỉ phải bao gồm < GL/glew.h> và thực hiện một số việc khởi tạo với glewInit();

Điều này tương thích với cả Linux và Windows, đặc biệt khi bạn sử dụng MinGW. Khi liên kết, tôi sử dụng như sau:

MY_LIBS = -lglew32 -lopengl32 -lWs2_32 -lole32 -lcomctl32 -lgdi32 -lcomdlg32 -luuid

tôi có thể khuyên bạn nên sử dụng một makefile generic, xem http://sourceforge.net/projects/gcmakefile/

Lưu ý rằng bạn cũng phải thiết lập context cho OpenGL, trước khi khởi chạy GLEW. Điều này được thực hiện khác nhau tùy thuộc vào môi trường. Nó được thực hiện khi bạn mở một cửa sổ. Đối với thư viện di động, tôi có thể đề xuất thư viện glfw hoặc freeglut.

+3

GLEW sẽ không thực hiện thiết lập ngữ cảnh cho bạn. Ngoài ra bạn vẫn cần phải liên kết với opengl32.lib, trong trường hợp của bạn được thực hiện bởi cờ liên kết '-lopengl32' mà bạn đề xuất. – datenwolf

+0

Cảm ơn, tôi đã thêm thông tin về tạo ngữ cảnh. –