Bonjour à tous , je débute et j'aimerai savoir si c'est possible de mettre une image en fond d'écran au lieu que ce soit tout noir ,
Si c'est le cas , comment faire ?
Merci
Version imprimable
Bonjour à tous , je débute et j'aimerai savoir si c'est possible de mettre une image en fond d'écran au lieu que ce soit tout noir ,
Si c'est le cas , comment faire ?
Merci
Salut
une facon simple de faire est de passer en mode 2D avec glOrtho2D puis desactiver l'ecriture en ZBuffer , puis dessiner un rectangle texturé sur toute la surface de la fenetre puis reactiver le ZBuffer ...
++
As tu pensé au skybox ?
http://raptor.developpez.com/tutorial/opengl/skybox/
Ca a l'air intéressant, je vais regarder de ce pas , merci
En fait , je vais redéfinir mon problème , Je dois faire un objet 3D qui fait des rotations par exemple grace à ma souris (déjà implémenté) sur une image en fond d'écran qui elle ne bouge pas du tout ,
je ne sais pas si là, la skybox est adaptée à mon problème
On va dire que c'est une version évoluée d'un fond qui ne bouge pas ...
Par contre, si tu veux un fond qui ne bouge pas, tu peux dessiner un quad texturé avec ton fond voulu avec l'écriture du depth désactivé (même principe que la skybox). Ton quad sera toujours fixe par rapport à ta camera..
Là , je galère vraiment , j'essaie de charger une image jpeg , mais rien ne fonctionne,
tu n'aurais pas un squelette de code pour voir ?
Charger une image jpeg, c'est pas évident .. il faudrait utilisé "libjpeg" pour la décompresser et la charger. Je te conseille de commencer par du bmp où tu peux trouver les sources à la fin du tuto sur les skybox.
Sinon, il y a quelques sources par la : http://jeux.developpez.com/sources/opengl/
le mieux est encore d 'utiliser une lib a image type "couteau suisses" (libjpeg est quelque peu tres specifiques et complique a mettre en place. D 'autant plus que pour lutilisateur lambda,la valeur ajoute de travail a aussi bas niveau est nulle). A l epoque j utilisais DevIL tres simple a utiliser qui chargeait simplement JPEG , BMP , PNG ...
Les gars , je galère vraiment de trop :boulet:, vous n'auriez pas un squelette de code a me proposer pour vraiment comprendre la syntaxe , ca serait vraiment sympa :oops:
Pour charger des textures avec Devil, voici une petite classe en espérant que ça t'aidera :
En pré-requis, glee.h et devil installé
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #ifndef TEXTURE_H #define TEXTURE_H #include <GL/glee.h> #include <GL/glut.h> #include <IL\ilut.h> class Texture { public: Texture(); ~Texture(); void Init(char *filename,bool detail = false); GLuint GetId(){return m_glId;} unsigned int GetWidth(){return m_w;} unsigned int GetHeight(){return m_h;} protected: unsigned int m_h; unsigned int m_w; unsigned int m_bpp; GLuint m_glId; }; #endif
Pour le cpp
Le niveau de finesse n'est pas fabuleux mais ça ne demande qu'à être amélioréCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include "texture.h" Texture::Texture() { m_glId = 0; m_h = 0; m_w = 0; } Texture::~Texture() { glDeleteTextures(1,&m_glId); } void Texture::Init(char *filename,bool detail) { ILuint ilId; glEnable(GL_TEXTURE_2D); ilGenImages(1,&ilId); ilBindImage(ilId); ilLoadImage(filename); m_w = ilGetInteger(IL_IMAGE_WIDTH); m_h = ilGetInteger(IL_IMAGE_HEIGHT); m_bpp = ilGetInteger(IL_IMAGE_BITS_PER_PIXEL)/8; if(m_bpp = 32) ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE); else ilConvertImage(IL_RGB,IL_UNSIGNED_BYTE); glBindTexture(GL_TEXTURE_2D, m_glId); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); if(detail == false) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); } else { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); } m_glId = ilutGLBindMipmaps(); ilDeleteImages(1,&ilId); glDisable(GL_TEXTURE_2D); }
Pour utiliser la chose
J'ai aussi fait une version héritée qui récupère les rgba de chaque pixel pour faire des effets si ça t'intéresse...Code:
1
2
3
4
5
6
7
8
9
10
11 Texture arbre; arbre.Init("matexture.png"); ... glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, arbre.GetId()); glBegin()... ... glEnd()... glDisable(GL_TEXTURE_2D);
Nickel , bien que ce soit le format .bmp qui m'intéresse , je vais regarder ca .
Merci bien :king:
Perso quand je télécharge un soft et que l'archive pèse 80 Mo parceque le gars utilise des BMP ça m'embète un peu.
Donc ce que je te conseillerais c'est d'utiliser plutôt le PNG pour les textures ou tu veux du lossless.
La somme de travail pour y parvenir est proche de 5 minutes, car il suffit de copier les fichiers sources donnés par exemple à la fin de cette page :
http://tfc.duke.free.fr/coding/png.html
le code est distribué sous une licence MIT/X11 donc permissif.