Cài đặt SOIL2 - Simple OpenGL Image Library

Trong riêng bài viết này, mình sẽ hướng dẫn cài đặt và sử dụng SOIL2 cho Visual Studio 2013 (Community Edition), một phần là vì cách cài đặt SOIL2 vào project sẽ hơi khác (chúng ta sẽ biên dịch SOIL2 từ source code..rất dễ xD~) so với việc download thư viện pre-built từ source và sử dụng; phần còn lại là vì mình không muốn làm rối bài hướng dẫn gốc.

Về SOIL2

SOIL2 là một thư viện cho phép người dùng có thể load textures vào OpenGL một cách dễ dàng. Textures, theo cách dễ hiểu, là một hình ảnh. Cỏ, cây, lá, mặt bàn, mặt đất, bầu trời. Chúng ta có thể dán những textures này vào bề mặt vật thể. Việc “dán” texture vào bề mặt vật thể được gọi là texture mapping (ánh xạ texture). Textures có thể là 1D, 2D hoặc 3D, trong đó 2D textures phổ biến nhất, chúng dùng để “dán” (ánh xạ - gọi là map, nên có tên “texture mapping”) hình ảnh vào vật thể, trong khi đó 1D textures có thể được dùng làm một bảng lookup (bảng màu có sẵn), và 3D có thể được dùng để tạo những thứ như volumetric particles. Well, ta sẽ không đi vào quá sâu, nhưng 2D textures là ứng dụng chính của textures, hết. xD~

Có sẵn các thư viện riêng khác cũng cung cấp chức năng load textures từ nhiều loại ảnh, tương tự như SOIL: DevIL, ResIL, FreeImage, v..v…, nhưng có vài lý do sau đây ta chọn SOIL2:

  • Không phụ thuộc DLL ngoài, dung lượng nhỏ, viết trên C.
  • Thích hợp dùng trong OpenGL: SOIL = Simple OpenGL Image Library. Ngoài load hình ảnh nó có thể thực hiện các thao tác load textures trong OpenGL, vốn là việc mà nếu dùng DevIL hay FreeImage, chúng ta phải load hình trước (bằng các thư viện này) rồi load textures từ ảnh này vào OpenGL.
  • Đọc được các loại định dạng ảnh thông dụng, giống như các thư viện cùng “loài”.

Tải và biên dịch SOIL2

Tác giả SOIL2 không cung cấp phiên bản thư viện cho nó, nên chúng ta sẽ tự compile source code để lấy thư viện. Một điều may mắn là chúng ta có thể generate project files cho Visual Studio bằng premake để có thể biên dịch rất dễ dàng.

Giải nén source code của SOIL2, chép file executable của premake vào thư mục SOIL2 và mở một command prompt.


premake4 vs2012
để generate project cho VS2012. Kết quả nằm trong ./make/windows/. Mở nó ra, và bạn sẽ nhận được thông báo cần update compilers cho project này. Chúng ta không sử dụng vs2013 mà dùng vs2012 vì tạm thời SOIL2 chưa hỗ trợ generate project trên VS2013, nên ta sẽ generate cho VS2012 và upgrade lên VS2013.

Bấm OK và chọn Build -> Build Solution hoặc nhấn F7. Nhớ trỏ configuration về “release”.

Kết quả sẽ nằm trong ./lib/windows/. Chép nó vào thư mục Dependencies cùng với headers của SOIL2 (nằm ở ./src/, bạn chỉ cần dùng thư mục SOIL2).

Cuối cùng là mở project, link thư viện của SOIL2 và include headers, thế là xong:

#include <SOIL2/SOIL2.h>
...
#pragma comment(lib, "soil2.lib")

Bạn có thể test bằng cách load 1 ảnh mẫu và trả kết quả: (thay img.jpg với một ảnh bất kì)

printf("%i", (GLuint) SOIL_load_OGL_texture("img.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_NTSC_SAFE_RGB));

Nếu printf() in ra 1, ta đã thành công.

Trong bài viết tiếp theo sẽ nói một cách tổng quát về rendering pipeline của OpenGL 4.3, là cách mà OpenGL biến đổi dữ liệu 3D thành dữ liệu 2D có thể hiển thị được trên màn hình.