Bonjour à tous,
J'ai présentement un problème avec les entiers à passer en paramètre à OpenGL.
Voici trois définition de fonction openGL:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void glGetIntegerv(GLenum pname, GLint *params); void glGetDoublev(GLenum pname, GLdouble *params); int gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz)
Je dois utiliser la fonction gluUnProject pour gérer le clic de la souris et savoir les coordonnées modifiées selon le scale, viewport ...
Voici mon code :
La fonction glGetDoublev passe très bien avec les réels avec pointeur. Dès que j'arrive à la fonctione glGetIntegerv, le parametre entier ne passe passe pas. J'ai essayer tout les types d'entier (signe ou non ... 2 4 8 octects ..) J'ai également essayer d'utiliser le type numérique, réels, monétaire, variant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ParamMatrix est un réel ParamProjection est un réel ParamViewPort est un entier sur 2 octets AppelDLL32("Opengl32.dll", "glGetDoublev",::GL_MATRIX_MODE,&ParamMatrix) AppelDLL32("Opengl32.dll","glGetDoublev",::GL_PROJECTION_MATRIX,&ParamProjection) AppelDLL32("Opengl32.dll", "glGetIntegerv",::GL_VIEWPORT,&ParamViewPort) API("Glu32.dll", "gluUnProject",rX,rY,0.0,ParamMatrix,ParamProjection,ParamViewPort,... &retourX,&retourY,&retourZ)
J'ai besoin de cette information pour gérer le clic de la souris. Quelqu'un a une idée pourquoi. L'erreur donné est une erreur de pile:
[WD100VM.DLL (25E60000), 10.01Bs, 01F100050o] 25E63039
[WD100VM.DLL (25E60000), 10.01Bs, 01F100050o] 25E71460 : WL_SetParam() + 81398 bytes-> INVALID, stack increased by 4
[???] 00ABB6E0
[WDTST.EXE (00000000), 10.00Af, 01F100045p] C98525F7
Pile invalide
Quelqu'un a une idée pour régler ce type de problème ?
Partager