8
votes

C ++ Cross Plateforme Image Loader pour OpenGL

J'ai tout essayé de SDL en diable, et ils ont tous échoué pour diverses raisons.

SDL Segfault pour diverses raisons, et le diable a un problème étrange où j'inclus il / ilut.h et tout lier, et y compris les autres en-têtes, il ne définit pas les fonctions dont j'ai besoin pour charger des images dans des textures OpenGL (quelque chose à propos de Utilisez_open_gl ne pas être défini). Je demande à tout autre libéré pour charger des bitmaps ou PNG dans un format, je peux facilement convertir en openGL ou une solution au problème du diable.

merci


0 commentaires

9 Réponses :


0
votes

Vous n'en avez pas besoin pour faire ce que vous voulez. Vous pouvez simplement utiliser getdata () et GLTEXIMAGE2D ()


0 commentaires

0
votes

Chargement d'images bitmaps (.bmp) et de NetPBM (.pbm, pgm, .pnm) est assez triviale, car ils stockent les images non compressées. Pour charger les pngs, utilisez libpng . Pour charger des JPEG, utilisez libjpeg . Pour les autres types d'images, utilisez une bibliothèque appropriée. Il y a un bon changement qui gifle sur 'Lib' au début du nom de l'image vous donnera une telle bibliothèque, par ex. libtiff, libtga, etc.

Une fois que vous avez chargé et non compressé des données d'image brute, le charger dans une texture OpenGL est une question d'appeler GLTEXIMAGE2D () avec les bons paramètres, et un couple d'autres changements d'état GL (par exemple, comment faire des mipmapping ).


0 commentaires

0
votes

Image Magick avec les liaisons C ou C ++?

http://www.imagemagick.org/script/index.php


0 commentaires

3
votes

lodepng est un chargeur PNG hautement compact sans dépendances.

Commentez votre expérience avec Diable - ça marche parfaitement pour moi et beaucoup d'autres. Pourquoi ne pas essayer à nouveau de résoudre vos problèmes de construction? - ne devrait pas être trop dur)


0 commentaires

2
votes

Le sol est un léger léger décent que j'ai utilisé auparavant. Il est en fait spécialisé pour charger des textures opengl aussi.

http://lonesock.net/soil.html


1 commentaires

Je pense que cela devrait être la bonne réponse. C'est une bibliothèque légère avec une API C incroyablement simple et elle repose principalement sur STB_IMAGE.C (qui est le code de chargement d'image léger Spartan absolu) mais c'est plus propre.



4
votes

Comme Adam suggère, je recommanderais également d'utiliser libpng et libjpeg. Vous ne spécifiez pas si vous écrivez en C ou C ++, mais si dans C ++, je vous suggère de jeter un coup d'œil à deux applications minces pratiques sur les deux bibliothèques: PNGXX et JPEGXX


0 commentaires

3
votes

Vous pouvez également essayer FreeImage Library . Il prend en charge la charge de différents types d'image et est fonctionnellement similaire au diable, peut travailler hors de la boîte pour vous.

Et à propos de votre problème de diable, vous n'avez pas à construire des bibliothèques ILU ou Ilut pour faire fonctionner le diable. Je vous recommanderais de gérer vous-même les objets de texture OpenGL, y compris le téléchargement de données d'image sur OpenGL Côté.


0 commentaires

16
votes

Libpng et Libjpeg peut être plutôt décourageant à construire et à utiliser - pas étonnant qu'il y ait toutes sortes de bibliothèques d'emballage pour les deux.

Un chargeur de non-non-sens très simple et minimal pour JPG / PNG (et une autre chose aswell) sans dépendances dans un seul fichier C est Sean Barrett's STB_IMAGE.C, si vous souhaitez simplement charger certains fichiers d'image, il ajoute absolument minimal Les frais généraux de votre programme et sont simples à utiliser:

http://nothings.org/stb_image.c


1 commentaires

Merci pour ce lien, c'est génial



0
votes

Jeune mais très bon assez bon SFML pourrait être celui que vous recherchez. Je l'ai utilisé pour de nombreux projets et tous ont bien fonctionné sur toutes mes plates-formes (Win7 et Ubuntu).


0 commentaires