Utiliser une fonction OpenGL avec pointeur (int)
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:
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 :
Code:
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) |
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.
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:
Citation:
[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 ?