2009-07-15 37 views
8

Tôi đã thử mọi thứ từ SDL đến DevIL và tất cả đều không thành công vì nhiều lý do khác nhau.

SDL segfaults vì nhiều lý do khác nhau, và DevIL có một số vấn đề lạ ngay cả sau khi tôi bao gồm IL/ilut.h và liên kết mọi thứ, và bao gồm các tiêu đề khác, nó không xác định các chức năng tôi cần tải hình ảnh kết cấu opengl (một cái gì đó về USE_OPEN_GL không được xác định). Tôi yêu cầu cho bất kỳ lib khác ra có cho tải bitmap hoặc png vào một định dạng tôi có thể dễ dàng chuyển đổi sang opengl, hoặc một giải pháp cho vấn đề ma quỷ.

cảm ơnC++ Trình tải ảnh nền tảng chéo cho OpenGL

Trả lời

0

bạn không cần ILUT làm những gì bạn muốn. bạn chỉ có thể sử dụng ilGetData() và glTexImage2d()

0

Tải ảnh bitmap (.bmp) và hình ảnh netpbm (.pbm, pgm, .pnm) là khá tầm thường, vì chúng lưu trữ hình ảnh không nén. Để tải PNG, hãy sử dụng libpng. Để tải ảnh JPEG, hãy sử dụng libjpeg. Đối với các loại hình ảnh khác, hãy sử dụng thư viện thích hợp. Có một thay đổi tốt khi tát vào 'lib' vào đầu tên hình ảnh sẽ cung cấp cho bạn một thư viện như vậy, ví dụ: libtiff, libtga, vv

Khi bạn đã tải và giải nén dữ liệu hình ảnh thô, tải nó vào một kết cấu OpenGL chỉ là vấn đề gọi glTexImage2D() với thông số phù hợp và một vài thay đổi trạng thái GL khác (ví dụ làm thế nào để làm mipmapping).

3

LodePNG là một PNG Loader cao nhỏ gọn với không phụ thuộc.

Nhận xét về trải nghiệm của bạn với DevIL - nó hoạt động hoàn hảo cho tôi và nhiều người khác. Tại sao không thử lại để giải quyết vấn đề xây dựng của bạn? - không nên quá khó)

2

SOIL là loại nhẹ mà tôi đã sử dụng trước đây. Nó thực sự là chuyên ngành để tải kết cấu OpenGL.

http://lonesock.net/soil.html

+0

Tôi nghĩ đây là câu trả lời đúng. Đó là một thư viện gọn nhẹ với API C cực kỳ đơn giản và nó chủ yếu dựa trên stb_image.c (đây là mã tải hình ảnh trọng lượng nhẹ tuyệt đối của Spartan) nhưng nó sạch hơn. – bigD

4

Như Adam gợi ý, tôi cũng khuyên bạn nên sử dụng libpng và libjpeg. Bạn không xác định nếu bạn viết bằng C hoặc C++, nhưng nếu trong C++, thì tôi khuyên bạn nên xem hai trình bao bọc mỏng tiện dụng trên cả hai thư viện: pngxxjpegxx

3

Bạn cũng có thể thử FreeImage library. Nó hỗ trợ tải các loại hình ảnh khác nhau và có chức năng tương tự như DevIL, có thể làm việc ra khỏi hộp cho bạn.

Và về vấn đề của bạn với DevIL, bạn không phải xây dựng thư viện ilu hoặc ilut để làm cho DevIL hoạt động. Tôi khuyên bạn nên tự quản lý các đối tượng kết cấu OpenGL, bao gồm cả việc tải dữ liệu hình ảnh lên phía OpenGL.

15

Cả hai libpng và libjpeg có thể khá khó khăn để xây dựng việc sử dụng & - không có thắc mắc có tất cả các loại thư viện trình bao bọc cho cả hai.

Trình nạp vô nghĩa rất đơn giản và tối thiểu cho jpg/png (và một số công cụ khác) mà không phụ thuộc vào một tệp C là Sean Barrett's stb_image.c, nếu bạn chỉ muốn tải một số tập tin hình ảnh nó thêm overhead hoàn toàn tối thiểu để chương trình của bạn và là đơn giản để sử dụng:

http://nothings.org/stb_image.c

+3

Cảm ơn bạn đã liên kết này, điều này thật tuyệt vời – joeld

+0

Tôi đã tìm kiếm hai ngày cho một tệp như vậy, cảm ơn bạn. – Mousa

0

trẻ nhưng chưa lớn đủ SFML có thể là một trong những bạn đang tìm kiếm. Tôi đã sử dụng nó cho nhiều dự án và tất cả các 'em làm việc tốt trên tất cả các nền tảng của tôi (Win7 và Ubuntu).

Các vấn đề liên quan