[V4 Beta3] OpenGL avec double en paramètre [Résolu/Reporté]

Archive.
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

[V4 Beta3] OpenGL avec double en paramètre [Résolu/Reporté]

Message par Niffo »

Toujours pas possible d'appeler les fonctions Opengl comme gluPerspective() sans Wraper ?
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Non, mais tu peux utiliser 'Import "OPENGL32.lib"' pour y remedier pour l'instant.
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message par Niffo »

Ah oui, effectivement :)
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message par Niffo »

Ou est mon erreur, ça me répond "POLINK: error: Unresolved external symbol 'gluxxxxxx' ?

Code : Tout sélectionner

Import "glu32.lib"
   gluPerspective__(fovy.d, aspect.d, zNear.d, zFar.d) As "gluPerspective"
   gluPickMatrix__(x.d, y.d, Width.d, Height.d, viewport.l(1)) As "gluPickMatrix"
   gluCylinder__(*qobj.l, baseRadius.d, topRadius.d, Height.d, slices.l, stacks.l) As "gluCylinder"
   gluDisk__(*qobj.l, innerRadius.d, outerRadius.d, slices.l, loops.l) As "gluDisk"
EndImport
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Code : Tout sélectionner

Import "glu32.lib" 
  gluPerspective.l(fovy.d, aspect.d, zNear.d, zFar.d) As "_gluPerspective@32" 
  gluPickMatrix.l(x.d, y.d, Width.d, Height.d, viewport.l(1)) As "_gluPickMatrix@36" 
  gluCylinder.l(*qobj.l, baseRadius.d, topRadius.d, Height.d, slices.l, stacks.l) As "_gluCylinder@36" 
  gluDisk.l(*qobj.l, innerRadius.d, outerRadius.d, slices.l, loops.l) As "_gluDisk@28" 
EndImport

Debug gluPerspective(0,0,0,0)
1/
Tu peux définir le type de la valeur de retour d'une fonction (.l, .d, etc...)
C'est à dire gluPerspective.l() plutot que gluPerspective__()
Ca te servira surement.

2/
Tu dois définir le nom exact de la fonction et au format classique çà ressemble plus souvent à çà : _fonction@8 où 8 est la taille mémoire occupé par toutes les arguments...

Voilà :D Mais par contre méfies-toi de mon code ci dessus, je l'ai corrigé sans vérifié du tout. Faudrait regarder dans l'api opengl quels sont les types des valeurs de sortie, et les tailles...
Image
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message par Niffo »

Ces fonctions ne retournent pas de valeur (void) ;)

Sinon, j'avais ouvert les DLL avec "Dependency Walker" en pensant voir le bon nom des fonctions, mais visiblement ce n'est pas le cas :(
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Niffo a écrit :Ces fonctions ne retournent pas de valeur (void) ;)

Sinon, j'avais ouvert les DLL avec "Dependency Walker" en pensant voir le bon nom des fonctions, mais visiblement ce n'est pas le cas :(
Le probleme c'est que tu n'y accedes pas directement, tu passes par un .lib (OpenGL32.lib dans ce cas) qui se trouve dans PureLibraries\Windows\Libraries\ . Edite le et tu devrais voir les symbols exportés.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Editeur purebasic -> Outils -> File Viewer (Visionneuse de fichier) -> purelibraries/windows/glu32.lib -> toutes les fonctions y sont.
Image
Niffo
Messages : 108
Inscription : dim. 29/août/2004 15:51

Message par Niffo »

Merci à tous les deux en tous cas, ça marche bien et sans wrapper maintenant :)

D'autre part, c'est un vrai bonheur maintenant d'accéder aux extensions Opengl grâce aux prototypes et sans CallFunctionFast !

Exemple :

Code : Tout sélectionner

Prototype PFNGLBINDBUFFERARBPROC(target.l, Buffer.l)
Global glBindBufferARB_.PFNGLBINDBUFFERARBPROC
glBindBufferARB_ = wglGetProcAddress_("glBindBufferARB")
Répondre