CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

OpenGL + texture

Wismerhillbest
Wismerhillbest
Niveau 4
12 novembre 2003 à 20:42:41

je programme de l´opengl sous windows avec dev c++.
Tout marche bien jusqu´a ce que j´essaie de mettre des textures au format . rgb ( n´importe quel format d´ailleurs), l´application se lance et s´arrete avant d´afficher quoi que ce soit.

Si qqn a la solution, qu´il me fasse signe, ca serait sympa

JeanYvesYves
JeanYvesYves
Niveau 10
13 novembre 2003 à 01:07:33

Il faut bien mettre en place ta texture, sinon ça foire.
tu as déja mis des textures ?

sinon, je te renvoie sur la leçon 06 du tutorial de NEHE

http://nehe.gamedev.net

si tu as soucis malgré cela, je t´aiderai

Wismerhillbest
Wismerhillbest
Niveau 4
13 novembre 2003 à 02:09:35

En fait, si tu veux, à l´ecole, on utilise linux et il y a pas de pb lors de l´execution, on met les textures dans le meme repertoire et c tout.

Par contre, avec dev c++, ca ne marche pas de la meme facon, il faut lui indiquer un lien ou je ne sais quoi.

Donc si tu connais un logiciel sous windows avec lequel t´arrive a mettre des textures, ca serait sympa de me dire quel logiciel t´as utilisé et comment t´as fait pour configurer le logiciel

Merci

Diwi
Diwi
Niveau 5
13 novembre 2003 à 10:41:29

Tu devrais regarder le Tuto de nehe ( comme l´as dit JY²) car je l´ai fait avec Dev C++ et ça marche nickel.

Tu as bien vérifié le chemin que tu indiquais pour trouver l´image, normalement, tu peux faire un test avant sur l´ouverture du fichier pour savoir si celui-ci existe bien, toujours dans le tutorial, c´est :
FILE *File=NULL;
File=fopen("toto.rgb","r");
if ( File)
{
fclose(File);
return auxDIBImageLoad(Filename);
}

Essaie ca juste après l´ouverture du fichier et met un test dans le if pour avoir un log, tu sauras s´il s´ouvre ou non

Wismerhillbest
Wismerhillbest
Niveau 4
13 novembre 2003 à 13:09:40

l´image est dans le meme repertoire que le fichier . c donc il ne me semble pas necessaire de lui indiquer le chemin.
j´utilise " assert(file!=NULL);"

dans le projet créé, on insere le code source mais doit on inserer egalement l´image ? ??

Sinon, je veux bien afficher le code source dans mon prochain message ou l´envoyer par mail si c plus pratique

JeanYvesYves
JeanYvesYves
Niveau 10
13 novembre 2003 à 13:22:06

non : inutile d´insérer ta texture dnas le projet
si tu fais assert(file!=NULL) alors C bon pour ton fichier.

Si sous Linux tu utilises GLUT, alors c´est completement portable sous Windows.
si tu n´utilises pas GLUT, qu´utilises tu ?

normalement si ça se compile, ce n´est pas un probleme de lien ( adapter le Makefile).
Qu´utilises tu pour charger ta texture ? QT ? ou alors tu lis ton fichier manuellement ?

marque ici le code de chargement de texture
depuis le load propre, jusqu´au glGenTexture
ainsi que le
glBind, glTexture2D ou glMipampTexture, puis glTexParameter
( excuse pour les fautes de noms de fonctions, je n´arrive jamais a les retenir)

sinon, comme on te disais, Nehe a fait des fonctions qui chargent la texture.

Wismerhillbest
Wismerhillbest
Niveau 4
13 novembre 2003 à 18:53:31

En fait, je viens a peine de commencer la programmation openGL depuis 1 semaine maintenant et on a deja des morceaux de code source comme pour la texture par exemple. Voici la fonction pour les textures:

unsigned char texture[256*256*3];

void loadTexture(char *filename)
{
int i, x, y, c;
FILE *file=fopen(filename, " r");

assert(file!=NULL);

for ( i=0; i<512; i++)
fgetc(file);

for ( c=0; c<3; c++)
for ( y=0; y<256; y++)
for ( x=0; x<256; x++)
texture[y*3*256+x*3+c]=fgetc(file);

fclose(file);
}

void initTexture()
{
loadTexture("terre.rgb");

glEnable(GL_TEXTURE_2D);

//pour les GL_TEXTURE_MAG_FILTER et GL_TEXTURE_MIN_FILTER,
//tester aussi la valeur GL_LINEAR
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexImage2D(GL_TEXTURE_2D, 0, 3,
256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE,
texture);
}

Voila pour la texture, j´envoie dans le prochain message l´appel de la structure

Wismerhillbest
Wismerhillbest
Niveau 4
13 novembre 2003 à 18:59:29

La texture est un carré representant le monde et le but est de l´afficher sur chaque face d´un cube. Voici l´appel de la texture sur le cube:

void cube3()
{
initTexture();

glBegin(GL_POLYGON);
glTexCoord2f(0,1); point(0);
glTexCoord2f(1,1); point(1);
glTexCoord2f(1,0); point(3);
glTexCoord2f(0,0); point(2);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(1,1); point(4);
glTexCoord2f(1,0); point(6);
glTexCoord2f(0,0); point(7);
glTexCoord2f(0,1); point(5);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0,0); point(7);
glTexCoord2f(0,1); point(6);
glTexCoord2f(1,1); point(2);
glTexCoord2f(1,0); point(3);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0,0); point(4);
glTexCoord2f(0,1); point(5);
glTexCoord2f(1,1); point(1);
glTexCoord2f(1,0); point(0);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0,0); point(5);
glTexCoord2f(0,1); point(7);
glTexCoord2f(1,1); point(3);
glTexCoord2f(1,0); point(1);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0,0); point(6);
glTexCoord2f(0,1); point(4);
glTexCoord2f(1,1); point(0);
glTexCoord2f(1,0); point(2);
glEnd();
}

et j´ajoute
glMatrixMode(GL_TEXTURE);
dans ma fonction d´affichage

Le tout marche tres bien sous linux
donc, je dois oublier qqch

G regarder le site de Nehe et y a 2 includes que je ne comprends pas trop a quoi ca peut servir:

  1. include < gl\glaux.h>
  2. include < windows.h>

Je ne les ai pas mis dans mon programme sous win

gollumkawder
gollumkawder
Niveau 10
13 novembre 2003 à 23:50:09

Tu n´as pas mis les includes dans ton source ? ??
si c´est le cas tu dois le faire au début
et tu dois linker comme ça avec dev-C++ sous win
( peut etre que tu l´as bien fait mais je le mets quand meme^^)
Projet>options du projet et tu mets ça dans le linker
-lopengl32 -lglaux32 -lglut32

  1. include < GL\glaux.h>

c´est le header qui sert pour s´occuper de la gestion des fonctions openGl que tu emplois ( en l´occurence openGL, glaux et glut ( indispensable je crois))

  1. include < windows.h> est le header qui s´occupe de gerer les fonctions relatives à la fenetre WIN que tu crées dans ton programme, lui n´as pas besoin d´etre linké sur dev-c++ ( il faut bien choisir window au départ quand tu crées le projet)

Je ne sais pas si c´est ce que tu voulais savoir, tout en sachant qu´étant un noob de l´oGL ( et du coding...)mes réponses ne sont pas précises enfin si cela peut t´aider je serais happy :)
n´hésites pas au cas où...
++

gollumkawder
gollumkawder
Niveau 10
13 novembre 2003 à 23:52:27

je précise qu´il faut que tu ais les dll files pour openGL comme glaux.dll GLUT.dll ( un truc dans le genre)
je sais pas si tu l´as fait mais quand on a des probs il faut revoir meme les trucs à la c... ( c´est ce que je fais ^_^)

Wismerhillbest
Wismerhillbest
Niveau 4
14 novembre 2003 à 02:00:24

J´avais bien mis
-lopengl32 -lglu32 -lglut32
la librairie glaux, je m´en sert pas donc je ne l´ai pas mis.

En fait, l´opengl marche bien sous windows tant qu´on n´utilise pas de textures.

C seulement dans l´application d´une texture sur un objet que le programme bug et sans comprendre pourquoi

Merci de tes conseils ! !! ; )

Diwi
Diwi
Niveau 5
14 novembre 2003 à 12:09:49

Juste une question, il faut que ton image soit à l´emplacement de ton executable ( par ex, si ton executable est dans /Release, mais tes sources sous /, il faut que ton image soit sous /Release).

Ensuite, essaie de faire le même test avec une image classique ( comme un BMP), ceci peut permettre de savoir si c´est ton image qui ne peut pas être prise ou autre.

gollumkawder
gollumkawder
Niveau 10
14 novembre 2003 à 15:50:53

De rien on m´aide bcp en prog alors j´essais de trnasmettre les conseils qu´on me donne comme ça c´est utile à tout le monde et ca permet d´éviter des erreurs betes :)

Wismerhillbest
Wismerhillbest
Niveau 4
15 novembre 2003 à 20:36:17

Ce WE, je ne suis pas sur le pc ou je programme donc je pourrais pas de suite de repondre Diwi mais j´ai laissé la configuration par defaut de dev c++ donc il se peut en effet que l´executable soit autre part que dans le rep des fichier sources. Il me semblait qu´il les placé tout seul dans le rep des fichiers sources.

Je te dirais quoi dimanche soir ou lundi

++

Wismerhillbest
Wismerhillbest
Niveau 4
16 novembre 2003 à 21:27:07

Le probleme, c t bien que l´image etait pas dans le meme rep que l´executable. Je croyais qu´il creer l´executable au meme endroit que le code source mais apparemment non.

Donc, l´execution du prog se lance bien mise. Mais la texture se retrouve plaqué sur 2 mm en bas et les couleurs sont bizarres ! !!!!

loulloutez
loulloutez
Niveau 10
20 novembre 2003 à 10:18:50

ouais..............

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment