Bon, chui un peu perdu la, je redit tout :
Dans lib : GLAUX.lib, GLU32.lib, glut32.lib.
Dans include : GL.h, GLAUX,h, GLU.h, glut.h.
Ensuite, je met un code tout simple ( voir au dessus ) , ça me met une erreur. Erreur de linkage.
Ensuite ![]()
il te manque encore gl et glu au niveau des libs je pense
Bonjour j´ai télécharger à plusieurs reprises le compilateur dev C/C++ et il y avait toujours un problème au niveau de l´instruction ´clrscr´ mais aussi ´gotoxy´ et des couleurs et du clignotement ( BLINK, GREEN etc...) comment cela se fait-il pouver-vous m´aider merci d´avance.
Normal j´ai le meme compilo et ca ne marche pas
benji-nintendo > tu inclus conio.h ?
quel erreur ça te met ?
Conio est obsolete, et de moins en moins géré ( C tout pourri conio, lol ! )
Je change le nom de glut32.lib par glut.lib.
Linkage :
g++:C:\Dev-C++\Lib\glut32.lib: No such file directory.
g++: file path prefix `C:\DEV-C_~1\Bin\` never used.
Je rechange glut.lib par glut32.lib :
Linkage :
c:\...\mes
documents\programmation\c++\opengl\unlited1.o(.tex
t+0x17):unlited1.cpp: undefined reference to `__glutInit´WhiteExit´
c:\...\mes
documents\programmation\c++\opengl\unlited1.o(.tex
t+0x17):unlited1.cpp: undefined reference to `__glutCreateWindowWithExit´
c:\...\mes
documents\programmation\c++\opengl\unlited1.o(.tex
t+0x17):unlited1.cpp: undefined reference to `__glutCreateMenuWhitExit´
c:\...\mes
documents\programmation\c++\opengl\unlited1.o(.tex
t+0x17):unlited1.cpp: undefined reference to `__glutInitDisplayMode´
c:\...\mes
documents\programmation\c++\opengl\unlited1.o(.tex
t+0x17):unlited1.cpp: undefined reference to `__glutInitWindowSize´
c:\...\mes
documents\programmation\c++\opengl\unlited1.o(.tex
t+0x17):unlited1.cpp: undefined reference to `__glutFullscreen´
Le code ( basique ) :
int WindowName;
int main( int argc, char *argv[ ], char *envp[ ] )
{
glutInit(&, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(640,480); //Optionnel
WindowName = glutCreateWindow("Ma première fenêtre OpenGL ! ");
glutFullScreen(); //Optionnel
return 0;
}
Ca m´énerve de trop quand même ![]()
Les undefined reference c´est encore un prob de linkage...
T´es sûr que t´as la bonne version de Glut ( la mingw32, pas la VC++...)
Aucune idée
QQn peut m´le mettre sur un ftp ?
Au risque de passé pour un boulay, je vais poser qq questions :
Code :
/ /Prototype de notre fonction d´écoute
LRESULT CALLBACK WindowProcedure ( HWND, UINT, WPARAM, LPARAM);
/ / nom de la classe en variable globale
char szClassName[ ] = " WindowsApp";
int WINAPI
WinMain ( HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; / /on définit un handle pour la fenetre
MSG messages; / /on définit une structure de message
WNDCLASSEX wincl; / /on définit une classe pour notre fenetre
/ /notre classe de fenetre
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof ( WNDCLASSEX);
wincl.hIcon = LoadIcon ( NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon ( NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor ( NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; / /pas de menu
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = ( HBRUSH) COLOR_BACKGROUND;
/ /on enregistre notre classe et si on n´y arrive pas on quitte le programme
if ( !RegisterClassEx ( &))
return 0;
/ /Maintenant que notre classe de fenetre est enregistré on peut cré la fenêtre
hwnd = CreateWindowEx (
0, / /pas important :D
szClassName, / /nom de la classe
" Windows App", / /nom de notre fenetre
WS_OVERLAPPEDWINDOW, / /on cré une fenetre redimensionnable
CW_USEDEFAULT, / /position par défault
CW_USEDEFAULT, / /pareil
544, / /longueur de la fenetre
375, / /hauteur
HWND_DESKTOP, / /fenetre mère ( et non pas fille)
NULL, / /notre fenetre ne contien pas de menu
hThisInstance, / /notre handle
NULL / /pas important :D
) ;
/ / on affiche notre fenetre
ShowWindow ( hwnd, nFunsterStil);
/ /on envoi les message a notre fonction d´écoute
while ( GetMessage ( &, NULL, 0, 0))//GetMessage revoie 0 quand il recoit le message WM_QUIT
{
/ /compliqué...
TranslateMessage(&);
/ /c´est ici précisément qu´on envoie les messages
DispatchMessage(&);
}
/ /on quitte
return messages.wParam;
}
/ /notre fonction d´écoute des messages
LRESULT CALLBACK
WindowProcedure ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch ( message) / /on traite les messages avec un switch
{
case WM_DESTROY:
PostQuitMessage ( 0); / /si on clic sur la croix :D on quitte :D
break;
default: / /si on ne recoit aucun message ( ne pas modifier)
return DefWindowProc ( hwnd, message, wParam, lParam);
}
return 0;
}
Questions :
1-
int WINAPI
WinMain ( HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
Elles servent à quoi les propriétés ?
2-
C´est quoi un handle ?
Code :
/ /notre classe de fenetre
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof ( WNDCLASSEX);
wincl.hIcon = LoadIcon ( NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon ( NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor ( NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; / /pas de menu
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = ( HBRUSH) COLOR_BACKGROUND;
3-
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof ( WNDCLASSEX);
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
Sert à quoi ?
4-
wincl.hIcon = LoadIcon ( NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon ( NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor ( NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.hbrBackground = ( HBRUSH) COLOR_BACKGROUND;
Comment changer d´icône, de curseur, de background, comment mettre des menus ?
5-
Code ET question :
hwnd = CreateWindowEx (
0, / / Sert à quoi ?
szClassName,
" Windows App",
WS_OVERLAPPEDWINDOW, / / Comment faire une fenêtre non redimensionnable ?
CW_USEDEFAULT, / / Comment personnaliser la position par défault ?
CW_USEDEFAULT, / / Pourquoi l´écrire deux fois ?
544,
375,
HWND_DESKTOP, / / Sert à quoi ?
NULL, / / Idem
hThisInstance, / / Idem
NULL / / Idem
) ;
6-
ShowWindow ( hwnd, nFunsterStil);
nFunsterStil ?
7-
while ( GetMessage ( &, NULL, 0, 0))//GetMessage revoie 0 quand il recoit le message WM_QUIT
{
/ /compliqué...
TranslateMessage(&);
/ /c´est ici précisément qu´on envoie les messages
DispatchMessage(&);
}
/ /on quitte
return messages.wParam;
}
Rien compris là ^^
8-
La non plus :
LRESULT CALLBACK
WindowProcedure ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch ( message) / /on traite les messages avec un switch
{
case WM_DESTROY:
PostQuitMessage ( 0); / /si on clic sur la croix :D on quitte :D
break;
default: / /si on ne recoit aucun message ( ne pas modifier)
return DefWindowProc ( hwnd, message, wParam, lParam);
}
return 0;
}
Je sais en postant ce post, que j´ai ( quasi) aucune chance d´avoir des réponses ( étonnez-moi
) .
Vous vous dîtes : pourquoi y pose toutes ces questions, ça lui sert à quoi ?
Et bien, je ne recopierai pas le code bêtement sans
savoir ce que ça veut dire, je le comprendrai.
Merci d´avance à ceux qu´auront le courage de lire tout ça ( et de me répondre, ça serait encore mieux ^^ ) .
007, the boulay of the forum game-creator
1) cf. MSDN
2) un nom générique qu´on donne à un " identifiant" ( voire plus complexe...) pour manipuler un objet ; un handle de fichier par exemple, te permet de le manipuler. Des handles de fenetre, c´est pareil : tu veux que ton programme controle une autre fenetre, faut récuperer son handle ( en gros, et pour faire simple...)
3 et 4) cf. http://www.functionx.com/visualc/index.htm en gros tu crées une classe de fenetre perso, que tu enregistres ; c´est un modele qui te sert ensuite à créer des fenetres qui respectent ces propriétés. cf. MSDN aussi, pour tous les champs
5) c´est l´étape d´enregistrement de la classe de fenetre ; cf. le proto de la fonction dans la MSDN pour toutes les explications des paramètres
6) c´est un des params du point d´entrée de ta fonction winmain...
7) si si t´as tout compris.. quand tu recois un message, tu le " traduis" ( = décode avec le translate) pour savoir à quoi il correspond ; s´il est pour ta fenetre, il sera traité par ton callback winproc, sinon tu le dispatch aux autres applis ( vu que c´est un environnement multitaches, tu peux recevoir des messages de l´OS qui ne sont pas pour toi...)
8) ça c´est justement la boucle de message, qui traite ceux qui te sont destinés
avant d´attaquer le win32 de manière bestiale, munis toi d´une doc ( msdn) et de qq tuts ( functionx), ça ira tout seul...
Alors, j´ai recemment acheté un bouquin sur le C++, et dedans il propose un exo qui consiste à créer son propre fonction error(). Alors j´ai fait ce code :
void error(const char* error . ..)
{
va_list ap;
va_start(ap,error);
char *p = va_arg(ap,char*);//suppose que ap sera de types char*
cerr<<p<<" " <<error;
char *search;//cherche les caracteres %d,%s,%c
for(p = ap; *p; *p++)
{ if(*p!=´%´)
{}
else
{
*++p;//pour que ca lise le caractere suivant
switch(*p)
{
case ´s´ :
int entier = va_arg(ap,int);
cout<<"%s " <<entier;
break;
/ * case ´c´ :
double a_virgule = va_arg(ap,double);
cout<<"%c " <<a_virgule;
break;*/
}
}
}
}
Le probleme c´est que . ... ca ne marche pas ( hum). Mais le probléme c´est que je ne vois pas l´erreur ( ça n´affiche pas d´erreur dans la compilation, seulement dans l´execution du prog´).
je voudrai savoir comment a partir dun fichier . x ( de 3ds max) on peut utiliser son mesh ds le prog, et donc comment lui donner un nom de fonction pour lui donner des instruction merci ![]()
j´ai un blème,
SDL_Surface* screen;
SDL_Event event;
void init_SDL()
{
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
}
SDL_Rect Rect(int x,int y,int w=0,int h=0)
{
SDL_Rect r;
r.x=x;
r.y=y;
r.w=w;
r.h=h;
return r;
}
SDL_Surface* LoadBMP(char* fichier,int vram=1)
{
SDL_Surface* f = SDL_LoadBMP(fichier);
SDL_Surface* r;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
if ( r==NULL) vram=0;
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&);
SDL_FreeSurface(f);
return r;
}
int main(int argc , char **argv)
{
int s=1;
int sx=1,sy=1;
SDL_Rect rect1;
SDL_Surface* firstscreen;
SDL_Surface* perso[3];
int fini=0;
init_SDL();
rect1.x = 0;
rect1.y = 0;
firstscreen=LoadBMP("map.bmp");
perso[0]=LoadBMP("homme1.bmp");
perso[1]=LoadBMP("homme2.bmp");
perso[2]=LoadBMP("homme3.bmp");
//SDL_SetColorKey(perso[3],SDL_SRCCOLORKEY , SDL_MapRGBA(perso[3]->format,255,0,255,0));
//SDL_SetAlpha(perso[3],SDL_SRCALPHA,128);
while(1)
{
SDL_PollEvent(&);
if ( event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_RETURN)
break;
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_LEFT) rect1.x-=1;
if ( event.key.keysym.sym == SDLK_RIGHT) rect1.x+=1;
}
if ( rect1.x<0) sx=1;
if ( rect1.y<0) sy=1;
if ( rect1.x>950) sx=-1;
if ( rect1.y>650) sy=-1;
SDL_BlitSurface(firstscreen,NULL,screen,NULL);
SDL_BlitSurface(perso[rect1.x/20%3)]NULL,screen,&
ect1);
SDL_Flip(screen);
}
SDL_ShowCursor(1);
SDL_Quit();
return 0;
}
et ca me mets " parse error before token ´)´
SDL_BlitSurface(perso[rect1.x/20%3)]NULL,screen,&
ect1);
Ya pas comme une petite erreur de parenthèse ? ; )
ah non désolé j´ai essaiyer ton ex ca marche tjr pas
c´est peut être parce que j´ai pas corrigé la faute
tu n´a pas corrigé la faute
SDL_BlitSurface(perso[rect1.x/(20%3)],NULL,screen,
&1);
voila
merci ca marche, heu des fois tu ne serait pas comment assigner un img a une touche ( ex droite img du perso droite, gauche img du perso gauche)
le prog marche mais rien n´apparait
81 C:\Dev-Cpp\jeu2D.cpp
[Warning] division by zero in `rect1.SDL_Rect::x / 0´