| | | | Auteur | Message |
|---|
Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Texture pas au point. Sam 26 Avr - 14:31 | |
| le loader n'est pas en phase avec la classe CTexture , je m'explique :
la fonction g3d_loadtexture() , charge dans le media manager le bitmap mais tu dois obligatoirement donner diverse infos a la classe CTexture Notament , la taille , le mode , et le type de données.
| Citation: | g3d_SetTexture( *texture,0,256,256)
g3d_TexturePutPixel(*texture,0,1,1,255,0,0,255) ;g3d_LoadTexture(*texture,"./NeHe.bmp") <- marche po ^^
GLuint = g3d_GenerateTexture(*texture,0) g3d_SetTextureParameter(*Texture,#GL_TEXTURE_MAG_FILTER, #GL_LINEAR) g3d_SetTextureParameter(*Texture,#GL_TEXTURE_MIN_FILTER, #GL_LINEAR) g3d_SetTexture2D(*Texture,0,#GL_RGBA,#GL_RGBA,#GL_UNSIGNED_BYTE) g3d_SetMeshTexture(*cube,*texture) |
le mode peut être #GL_RGBA , #GL_RGB et le type de donnée généralement #GL_UNSIGNED_BYTE de (0 a 255) pour chaque couleur. |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 15:05 | |
| A ok, pas de soucis, je te laisse travailler sur le code, je vais apprendre des truc, c'est cool...  |
|  | | Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Re: Texture pas au point. Sam 26 Avr - 15:21 | |
| si je regarde bien le code , ton media manager remplace quasiment la classe CTexture. le problème est que *Array de CMediaManager est plein lors du chargement, mais pas celui de CTexture aparement. d'ou les textures blanches. |
|  | | Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Re: Texture pas au point. Sam 26 Avr - 15:30 | |
| Il faudrais lire les pixels et les mettre directement dans une instance de la classe CTexture , car c'est elle qui gère les paramètre OpenGL. le medias managers doit juste se contenté d'avoir une liste des fichiers déjà chargé.  |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 15:42 | |
| Il me semblais que le tableau Array ne servait qu'a créér en mémoire video par OpenGL la texture, et qu'après tu n'en avais plus besoin (d'ou la libération des ressources... )
D'ailleurs, c'est bizarre, car chez moi sur deux machines , je n'ai pas de textures blanches... etrange.. |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 15:46 | |
| D'ailleurs dans les exemples Nehe, c'est ce qu'ils font:
- chargement d'une image dans un buffer - creation de la texture openGL - libération du buffer créee de l'image.
a toi de voir ... |
|  | | Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Re: Texture pas au point. Sam 26 Avr - 16:08 | |
| oui , je suis d'accord , mais rien ne passe par CTexture , c'est là le problème  |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 16:16 | |
| Tu as dans CTexture la fonction Load, qui récupère l'ID de la texture OGL en m'émoire video. JE pensais que cela suffisait pour géné la texture au sein de la fonction CTexture. Que faut-il de plus alors sinon ? |
|  | | Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Re: Texture pas au point. Sam 26 Avr - 16:29 | |
| il faut que le media manager passe en paramètre la taille de l'image , l'array , et ensuite tu extrait l'id a partir de la classe CTexture , et non pas à partir de la classe Cmedia. l'id générer par cette classe est en quelque sorte , une coquille vide.  |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 16:37 | |
| J'avoue que je suis un peu perdu. Recode de la bonne manière, je comprendrais mieux un code je pense... |
|  | | Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Re: Texture pas au point. Sam 26 Avr - 16:57 | |
| j'ai trouvé comment procédé , t'occupe pas de ca ^^ par contre , j'essaye de voir pour les lumières , j'ai aucune réaction du moteur...  |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 17:05 | |
| Oui, moi aussi, pire, dès que j'active les lights, certaines de mes entities ne sont plus affichées...
 |
|  | | Cpl.Bator Dev

Inscrit le : 06 Avr 2008 Messages : 306
| Sujet: Re: Texture pas au point. Sam 26 Avr - 17:32 | |
| Pour ca , c'est simple :
| Code: | void CTexture::Rendering() { for(int i=0;i<MAX_STAGE;i++) {
//........................................................................................ if(this->TextureID[i]!=(unsigned)-1) { glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE); glMaterialfv( GL_FRONT, GL_AMBIENT, &Ambient[i].r ); glMaterialfv( GL_FRONT, GL_DIFFUSE, &Diffuse[i].r ); glMaterialfv( GL_FRONT, GL_SPECULAR, &Specular[i].r ); glMaterialfv( GL_FRONT, GL_EMISSION, &Emissive[i].r ); glMaterialf(GL_FRONT, GL_SHININESS, Shininess[i]); glBindTexture(GL_TEXTURE_2D,this->TextureID[i]); } //........................................................................................
}
} |
j'vais faire une maj dans la soirée. |
|  | | Invité Invité
| Sujet: Re: Texture pas au point. Sam 26 Avr - 18:09 | |
| Te speed pas, j'a ide la famille qui arrive ce soir, pour une semain, donc même si je ferais des visite régulières, mon temps pour coder va être plutôt réduit, donc prend le temps de poser ton code, désolé... |
|  | | |
| Page 1 sur 1 |
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| | |
| |