Page 4 sur 5
Publié : mer. 14/juin/2006 20:35
par Polo
Ben la je sais pas trop, tu t'y prends comment pour afficher les objets ?
Parce que ça peut peut-être venir de là

Publié : mer. 14/juin/2006 20:42
par Anonyme
En fait, lorsque je charge mes objets, touts les points (Vertices) vont dans une structure qui possède les infos des XYZ.
Structure Vertice
X.f
Y.f
Z.f
endstructure
lors du chargement, je compte le nombre de vertex charger
ensuite via une boucle j'affiche tout les points sans prendre en compte les l'objet.
Code : Tout sélectionner
For i = 1 To Vertice_Number
Point2D()\x=(Point3D()\x*256)/(Point3D()\z+#Zoff)+#Xoff
Point2D()\y=(Point3D()\y*256)/(Point3D()\z+#Zoff)+#Yoff
next i
Publié : mer. 14/juin/2006 21:00
par Polo
Oula, ben je sais pas, en fait, avec Direct3D c'est beaucoup plus simple ^_^
Publié : jeu. 15/juin/2006 0:22
par Anonyme
Direct3D plus simple?
je n'arrive même pas à l'initialiser

Publié : jeu. 15/juin/2006 16:36
par Polo
Oui, c'est peut être un peu déroutant, mais il y a des exemples sur le forum anglais, ça m'a pas mal aidé au début

Et après il faut télécharger le sdk de microsoft, qui est pas mal complet

Publié : jeu. 15/juin/2006 17:02
par Anonyme
le problème est que rien n'est compatible avec la v4
ou alors je suis bête
c'est pas grave, je passe au c++ & opengl

Publié : jeu. 15/juin/2006 17:23
par Polo
ah bon, mais ça doit pas être très dûr de convertir ça pour la v4 je pense

Sinon, pourquoi c++ pour l'OpenGL ? Purebasic convient aussi parfaitement

J'avais commencé mon moteur 3d en opengl d'ailleurs (puis je l'ai délaissé pour direc3d

)
Publié : ven. 16/juin/2006 0:20
par Anonyme
en fait, les exemples fournis sur le forum anglais ont besoin de 2 includes (je sais plus les noms) l'une d'elle possède les interfaces de dx9, lors de la compilation , il me dit qu'elles existent déjà, donc je vire l'include, et après il ne me reconnais plus les commandes directx avec les underscores
j'ai pas envie de me prendre la tête la dessus
j'ai essayer de faire une dll d'opengl pour pure, mais je ne sais pas à quoi correspond (int argc, char *argv[]) & comment l'interpreter dans purebasic...
donc je passe au c++ qui regorge de tutos sur opengl
p'tet que j'vais essayé ogre aussi ^^
@++
Publié : ven. 16/juin/2006 0:55
par Flype
Salut Cpl Bator,
(int argc, char *argv[]) se traduit assez facilement.
un petit example :
Code : Tout sélectionner
Structure ARG
*v.s[0]
EndStructure
Procedure test(argc.l, *arg.ARG)
For i = 0 To argc - 1
Debug *arg\v[i]
Next
EndProcedure
*x.ARG = AllocateMemory(5 * SizeOf(String))
*x\v[0] = "Cpl Bator"
*x\v[1] = "Pure"
*x\v[2] = "Basic"
*x\v[3] = "Test1"
*x\v[4] = "Test2"
test(5, *x)
Publié : ven. 16/juin/2006 7:38
par Anonyme
Merci Flype, mais le problème n'est pas là
voila en c++ la fonction principale se presente comme ca :
Code : Tout sélectionner
int main(int argc,char **argv)
{
glutInit(&argc,argv);
return 0;
}
je voudrais la transformer en fonction pour une dll comme ceci :
Code : Tout sélectionner
__declspec(dllexport) void maFonction(int argc,char **argv)
{
glutInit(&argc,argv);
}
mais je ne sais pas quoi lui passer comme paramètres

Publié : ven. 16/juin/2006 8:03
par Flype
la fonction main() en C est appelé automatiquement lors de l'exécution du programme. main() 'comporte' toujours argc et argv.
argc et argv représentent les arguments transmis à l'exécutable.
c'est la meme chose que ProgramParameter(i) en purebasic...
donc il faut se construire un tableau d'arguments et passer le pointeur du tableau.
je suis pas sûr mais çà devrait fonctionner comme çà (non testé) :
Code : Tout sélectionner
Structure ARGV
*v.s[0]
EndStructure
Procedure.l myGlutInit(argc.l, *arg.ARGV)
For i = 0 To argc - 1
Debug *arg\v[i]
Next
EndProcedure
Procedure.l Main()
Protected argc.l = CountProgramParameters()
Protected *arg.ARGV = AllocateMemory( argc * SizeOf(String) )
If *arg
For i = 0 To argc - 1
*arg\v[i] = ProgramParameter(i)
Next
EndIf
myGlutInit(argc, *arg)
EndProcedure
Main()
Publié : ven. 16/juin/2006 9:14
par Anonyme
oui, mais je lui transmet quoi à l'executable?
j'ai essayer l'exemple, il plante, il lui faut des paramètres.
et si je lui en file, il bug sur la fonction glutinit().
j'ai trouver comment recuperer les arguments :
Code : Tout sélectionner
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("ARGC = %ld ARGV = %ld\n", argc, argv );
system("PAUSE");
return 0;
}
je vais essayer de bidouiller pour voir si ca marche.
Publié : ven. 16/juin/2006 9:30
par Flype
tu as une petite archive, pour essayer avec ton environnement ?
Publié : ven. 16/juin/2006 9:32
par Anonyme
je suis en train de refaire la dll, je poste d'ici 30 a 40 minutes.
Publié : ven. 16/juin/2006 9:52
par Anonyme
File:1->
Dll_PureBasic.rar
la source de la dll est incluse dedans, ainsi que le code PureBasic.