Texture OpenGL Chargement
Soir tout le monde,
Je vais tourner en rond ici, mais je pense que je suis à la recherche dans les mauvais endroits.
Ma question est comment pourrais-je aller sur le chargement d'une image et de les appliquer à une primative en openGL. Par exemple le chargement d'un bmp ou jpg et en l'appliquant à un glutsolidsphere.
La solution serait limitée à une plate-forme ou cela pourrait-il fonctionner dans tous les?
Merci pour votre aide
source d'informationauteur John Roer
Vous devez vous connecter pour publier un commentaire.
Bien, si vous le souhaitez, vous pouvez écrire votre propre bmp chargeur. Ici est la spécification et un peu de code. Sinon, j'ai justement un tga chargeur ici. Une fois que vous faites cela, il va renvoyer les données dans un unsigned tableau de caractères, autrement connu comme GL_UNSIGNED_BYTE.
Pour faire une texture OpenGL à partir de ce tableau, vous devez d'abord définir une variable qui va servir de référence pour que la texture OpenGL mémoire.
Ensuite, vous devez dire à OpenGL pour faire de la place pour une nouvelle texture:
Ensuite, vous avez besoin de lier cette texture comme celle actuellement utilisée texture.
Enfin, vous devez indiquer à OpenGL où les données sont pour la texture courante.
Ensuite, lorsque vous effectuez le rendu d'un primitif, de l'appliquer à la primitive en appelant glBindTexture de nouveau:
Cependant, chaque fois que vous appliquez la texture pour un primitif, vous devez avoir les coordonnées de texture de données avec les vertex, et glutSolidSphere ne génère pas de coordonnées de texture de données. La texture d'une sphère, soit générer vous-même, ou appelez texgen fonctions, ou d'utiliser les shaders.
Il y a un nombre infini de façons de texture d'une image sur une sphère. Vous pouvez regarder dans le gltexgen commandes pour générer automatiquement des coordonnées de texture pour une surabondance de la sphère.
Il pourrait être plus complexe que ce que vous attendez.
Tout d'abord, je suis assez sûr que vous ne pouvez pas la texture d'une sphère dessiné à l'aide de
glutSolidSphere
puisque cette fonction n'est pas spécifier des coordonnées de texture pour les sommets il dessine. De sorte que vous aurez besoin de code d'une méthode pour dessiner une sphère vertex par vertex ou à l'aide d'un vertex buffer et assurez-vous de spécifier des coordonnées de texture pour chaque sommet.Une fois que ceci est fait, vous devez charger vos images. OpenGL n'est pas de fournir des fonctions pour charger des images à partir de fichiers et, si je me souviens bien, glu et glut n'en soit pas une. Ainsi, vous aurez à lire le fichier image de vous-même, ou utiliser une bibliothèque qui permet de faire. Diable est l'un d'entre eux.
Une fois que vous avez les données de pixel de l'image, vous devez créer une nouvelle texture OpenGL de l'utiliser. Certains chargement de l'image des bibliothèques peut le faire pour vous. Diable peut.
Je recommande fortement à googler pour des tutoriels, mais s'il vous plaît ne pas utiliser de NeHe tutoriels, leur qualité est généralement assez pauvres.
Ned a décrit joliment. Vous devriez lire le tutoriel de NeHeoù chaque étape est décrite en détail. Comme d'autres l'ont souligné, la texturation quad serait bon début et de la sphère peut être délicate.
Que c'est drôle, TGAs ont été le premier type de fichier image, j'ai été en mesure de charger correctement dans une texture. Malheureusement, OpenGL ne dispose pas de son propre construit dans les fonctions de l'API pour lire les fichiers directement. Donc, toutes les bibliothèques externes ou code serait nécessaire. Le format TGA est simple et Ned a fourni un bon code.