A quoi sert cette ligne ? ?
memset(buffer,0,255);
Franco01, si tu peux poster ton code içi, peut etre qu´on verrait mieux de quoi il retourne, en tout cas je suis aussi prêt a t´aider
libjcc
je te conseille de consulter la MSDN Library
http://www.msdn.microsoft.com
pdX-
j´ai un probleme avec un switch a chaque case qe je fai il me met une erreur du type :
error C2143: syntax error : missing ´:´ before ´{´
error C2051: case expression not constant
qqn peut il m´aider???
voici une parti de mon code source :
switch ( bourse)
{
case
(bourse==(0||1||11||12||23||33||34||44||45||55||56
||66||67||77||78||88||89||99))
{
++bourse;
cout<<"L´ordinateur a ajouté 1 francs à la bourse"<<endl;
break;
}
je sais ce n´ai po bo mai je nai po la place pour bien l´incrementer ! !!
merci de votr aide
oups en essayan de le rendre un peu pre lisible sur le forum jai remplacer une { par un ( juste apre le case dsl
en effet j ai fait le code sur winsock rapidos
la gestion des librairies n etant pas la meme sous dev que sous visual il faut bien faire comme tu as mis libjcc.
je modifierai ca dans qq temps pour le moment j ai pas trop le temps
fanofgame >
essaie de regarder mon tuto sur switch, il me semble que j y ai mis un exemple
Moi je commence à utiliser SDL_ttf(pour répondre à ma question pas obliger de connaitre sdl_ttf) car je fais un jeu, puis je veux prendre sdl_ttf pour lire mon score,un int, mais la fonction que j´utilise doit prendre un char, donc pouvez-vous me dire comment lire un int avec un char.
Je t´ai répondu dans ton topic, mais pq à chaque fois bcp de monde fait un topic+un post dans ce topic...-____-
Car les gens veulent des réponses rapidement . .
topic perdu en 3° page donc
fanofgame > ( si tu as toujours pas trouvé) il manque les 2points après ton case
case ( bourse==...) :
. ..
break;
pour sdl_ttf je ne l ai pas sous la main pour le moment.
mais si ta fonction prend un char c est surement parce qu elle veut un code ASCII
a mon avis il doit y avoir une fonction qui prend un char* non ?
( au pire tu appelles plusieurs fois celle qui prend un char)
ton score est un int, pour le tranformer en chaine utilise par exemple sprintf :
char c[20];
sprintf(c,"%d",score); / / score est un int
/ / ici tu as ton score en tant que char* dans c
A gollumkawder pour son message du 16 octobre :Franco01, si tu peux poster ton code içi, peut etre qu´on verrait mieux de quoi il retourne, en tout cas je suis aussi prêt a t´aider .
Ok je vous montre tout ca ( enfin pas tout car sinon ce serait trop long
) Merci en tout cas à ceux qui essayeront
/ /////////////////////////////
La fonction pour charger le bitmap
/ /////////////////////////////
int load_image(char *File)
{
unsigned char *Data;
FILE *fichier;
unsigned char Header[0x36];
GLuint DataPos,DataSize;
GLint Components;
GLsizei Width,Height;
GLenum Format,Type;
unsigned char t;
int x;
int deb=-2;//For debug
//Lit le fichier et son header
fichier = fopen(File,"rb");
if ( !fichier) {
printf("##Erreur## Fichier %s non trouve\n", File);
return -1;
}
if ( feof(fichier)) printf("end of file\n"); / /For debug
if ( fread(Header,1,0x36,fichier)!=0x36) {
printf("##Error## Not enough byte to read 0x36 header\n");
EXIT;
}
if ( Header[0]!=´B´ || Header[1]!=´M´) {
printf("##Error## header do not start with ´BM´\n");
EXIT;
}
if ( CTOI(Header[0x1E])!=0) {
printf("##Error## header byte 0x1E is ! = 0\n");
EXIT;
}
if ( CTOI(Header[0x1C])!=24) {
printf("##Error## header byte 0x1C is ! = 24\n");
EXIT;
}
/ /-- Récupère les infos du fichier
DataPos = CTOI(Header[0x0A]);
DataSize = CTOI(Header[0x22]);
/ /-- Récupère les infos de l´image
Width = CTOI(Header[0x12]);
Height = CTOI(Header[0x16]);
Type = GL_UNSIGNED_BYTE;
Format = GL_RGB;
Components = 3;
//!!!!
if ( DataSize==0)
DataSize=Width*Height*Components;
if ( DataPos==0)
DataPos=0x36;
printf("Texture is %d x %d x %d\n", Width, Height, Components);
/ /-- Charge l´image
fseek(fichier,DataPos,0);
Data = ( unsigned char*) malloc(DataSize);
if ( !Data)
EXIT;
if ( fread(Data,1,DataSize,fichier)!=DataSize)
{
free(Data);
fclose(fichier);
printf("##ERROR## Image size not cohenrent\n");
return -1;
}
fclose(fichier);
//Inverse R et B
for ( x=0;x<Width*Height;x++)
{
t=Data[x*3];
Data[x*3]=Data[x*3+2];
Data[x*3+2]=t;
}
/ /-- Envoie la texture à OpenGL
//glPixelStorei(GL_UNPACK_ALIGNMENT,1);
//glBindTexture(GL_TEXTURE_2D, tex_name[current_tex_name]);
glGenTextures(1,&);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D
(
GL_TEXTURE_2D, //target
0, //mipmap level
Components, //nb couleurs
Width, //largeur
Height, //hauteur
0, //largeur du bord
Format, //type des couleurs
Type, //codage de chaque composante
Data //Image
);
/ /For debuf
GLenum testError;
testError = glGetError ( );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
printf("Image ´%s´ loaded\n", File);
current_tex_name++;
return tex_name[current_tex_name-1];
}
/ //////////////////////////////////
LA FONCTION POUR TOUT INITIALIER(c´est ici que je charge le bitmap)
/ //////////////////////////////////
void gmed_initall()
{
int i;
char Texture[256] = " H:\\AllBricks1.bmp";
id_tex_tile = load_image(Texture);
etc...
CODES D INITIALISATION
etc...
}
/ ///////////////////////////////
LA FONCTION POUR AFFICHER LE CARRE TEXTURE
/ //////////////////////////////
void Draw(void)
{
int x=200,y=100,w=255,h=255;
int i,j;
glViewport ( 0, 0, glutwindow_w, glutwindow_h);
glMatrixMode ( GL_PROJECTION);
glLoadIdentity ( );
glOrtho(0, glutwindow_w, glutwindow_h, 0, -1, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glColor3f(1.0, 1.0, 1.0);
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_QUADS); / / Square
glTexCoord2f(0, 0); / / V must be inverted, do not know why
glVertex2f(x,y);
glTexCoord2f(0,1);
glVertex2f(x+w,y);
glTexCoord2f(1,1);
glVertex2f(x+w,y+h);
glTexCoord2f(1,0);
glVertex2f(x,y+h);
glEnd();
glDisable(GL_TEXTURE_2D);
glutSwapBuffers();
glutPostRedisplay();
}
/ /////////////////////////
DERNIERE FONCTION : LE MAIN
/ /////////////////////////
void gmed_edit_room ( Fl_Widget *, long)
{
Fl_Widget* obj;
int i;
gmed_initall();
glutwindow_w = ( 1+GMED_MAIN_WIDTH+1+1+GMED_TILE_WIDTH+1)*BS;
glutwindow_h = ( GMED_MAIN_HEIGH)*BS;
/ / -- Create FLTK window:
Fl_Window window(glutwindow_w+20, glutwindow_h+150);
gmed_create_buttons();
glGetIntegerv(GL_VIEWPORT, viewport);
window.show();
window.begin();
glutInitWindowSize(glutwindow_w, glutwindow_h);
glutInitWindowPosition(10,90); / / place it inside parent window
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH ) ;
glutInitDisplayMode(GLUT_SINGLE);
glutCreateWindow("Game Map Edit");
window.end();
/ /gmed_load_all();
/ / -- Define Callbacks functions
glutMouseFunc(ClicMouse);
glutMotionFunc(MoveMouse); / / Callback when mouse moves and a button is pressed
glutPassiveMotionFunc(MoveMouse); / / Callback when mouse move
glutDisplayFunc(Draw);
/ /glutKeyboardFunc(gmed_keyboard);
/ /glutSpecialFunc(gmed_special_keyboard);
glutMainLoop();
}
Voila tout pour le code, je vous explique les symptomes maintenant:
Le programme m´affiche un carré blanc sans texture.
Dans la fonction load_image ( ...) lors du test glGetError , j´obtiens testError=1282.
Ensuite dans la fonction gmed_initall(..) j´ai id_tex_tile à 0, ce qui est correct.
Par contre j´ai pas de reshape dans les callback ( mais je crois pas que c´est du à ca puisque l´erreur se fait avant, lors du chargement du bitmap avec glGetError à 1282
Voila ceux qui peuvenet m´aider sont le bienvenue
texture blanche = glTexImage2d qui q foire
si mes souvenirs sont bons, code 1282 = GL_INVALID_VALUE ou GL_INVALID_ENUM je ne sais plus
si c est le premier, c est peut etre parce que tu fais ton
glEnable(GL_TEXTURE_2D);
juste avant d afficher la texture alors qu il faut le faire aussi lors de l init !
si tu crees une texture, il faut que la gestion soit activee !
donc met ton
glEnable(GL_TEXTURE_2D);
juste avant ta ligne :
/ /-- Envoie la texture à OpenGL
et regarde si ca marche...
et sinon dis moi si ca renvoie le meme code...
J´utilise un Bloodshed 4.9.9.0
Dans projet, Options du projet, onglet paramère, je link :
- lopengl32
- lglut32
- lglu32
Petit code simple :
int WindowName;
int main( int argc, char *argv[ ], char *envp[ ] )
{
glutInit(&, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(640,480);
WindowName = glutCreateWindow("Ma première fenêtre OpenGL ! ");
glutFullScreen();
return 0;
}
J´ai inclu dans le dossier du programme glut32.dll
Erreur :
Fichier : C/...Makefile.win
Erreur : [Build Error] [Projet2.exe] Error 1
Mci d´avance ![]()
après un coup d´oeil rapide glut.h n´existe pas, c´est pas plutot glu.h ou gl.h qu´il faut inclure ?
Chez moi, si
Sinon, personne sait pourquoi ça met ça ? :S
( En attendant, je peux pas coder
)
A JYY :
J´ai mis glEnable(GL_TEXTURE_2D); juste avant la ligne :
/ / -- Envoie la texture à OpenGL
Mais ca me renvoi toujours la même erreur ![]()
Hmmm,
( c´est pas dans mes habitudes de faire ça, mais ça m´embête vraiment là
)
moi,j´utilise dev c++ et depuis quelque jours quand je compile j´ai le log d´erreur :
[Warning} Clock skey detected.You build may be incomplet.
Qu,es-ce que ca veut dire?
Juste un petit mot pour te remercier , JeanYvesYves , d´avoir repondu a mon mail .
" pouky10 Posté le 29 octobre 2004 à 23:32:31
moi,j´utilise dev c++ et depuis quelque jours quand je compile j´ai le log d´erreur :
[Warning} Clock skey detected.You build may be incomplet.
Qu,es-ce que ca veut dire?
"
> Je viens d´avoir ce problème après quelques changements minimes ( de simples int ! ) alors que tout allait bien avant.. Après une recherche sur google, il semblerait que ça ne soit rien de très grave.. :
" That"s a known problem, but we can"t find out the cause.
Just ignore it or hit the Compile button again, it"s nothing serious."