Équivalence Tableau en C vs PB

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Équivalence Tableau en C vs PB

Message par Guimauve »

Bonjour à tous,

Je voudrais avoir la confirmation de l'équivalence sur l'organisation des données du code C suivant vers un équivalent PB sans passer par les tableaux standard (Dim) qui ne peuvent pas être imbriqué dans une structure de donnée. (Attention, je ne parle pas comment initialiser le tableau, je parle du résultat final entre les 2 codes)

Code : Tout sélectionner

GLfloat vertices[] = {1,1,1,  -1,1,1,  -1,-1,1,  1,-1,1,        // v0-v1-v2-v3
                       1,1,1,  1,-1,1,  1,-1,-1,  1,1,-1,        // v0-v3-v4-v5
                       1,1,1,  1,1,-1,  -1,1,-1,  -1,1,1,        // v0-v5-v6-v1
                      -1,1,1,  -1,1,-1,  -1,-1,-1,  -1,-1,1,    // v1-v6-v7-v2
                      -1,-1,-1,  1,-1,-1,  1,-1,1,  -1,-1,1,    // v7-v4-v3-v2
                       1,-1,-1,  -1,-1,-1,  -1,1,-1,  1,1,-1};   // v4-v7-v6-v5

Code : Tout sélectionner

Vertices.i = AllocateMemory(72*SizeOf(Float))
Merci à l'avance.
Guimauve
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Équivalence Tableau en C vs PB

Message par djes »

Tiens. On voit là à quel point un code C peut être compact. Ce serait bien d'avoir une instruction de ce genre en PB pour remplir plus facilement des tableaux. Sinon, tu as un bon exemple opengl dans PB, qui montre comment créer des objets 'on the fly'

Code : Tout sélectionner

Macro GLfloat
f
EndMacro

Structure vertice
	x.GLfloat
	y.GLfloat
	z.GLfloat
EndStructure

*vertices.vertice = AllocateMemory(24 * SizeOf(vertice))

*myvert.vertice = ?MYVERT
For *i.vertice=*vertices To *vertices + 23 * SizeOf(vertice) Step SizeOf(vertice)
	*i\x = *myvert\x
	*i\y = *myvert\y
	*i\z = *myvert\z
	*myvert + SizeOf(vertice)
Next *i

End

DataSection

MYVERT:
Data.GLfloat 1,1,1,  -1,1,1,  -1,-1,1,  1,-1,1        ;// v0-v1-v2-v3
Data.GLfloat 1,1,1,  1,-1,1,  1,-1,-1,  1,1,-1        ;// v0-v3-v4-v5
Data.GLfloat 1,1,1,  1,1,-1,  -1,1,-1,  -1,1,1        ;// v0-v5-v6-v1
Data.GLfloat -1,1,1,  -1,1,-1,  -1,-1,-1,  -1,-1,1    ;// v1-v6-v7-v2
Data.GLfloat -1,-1,-1,  1,-1,-1,  1,-1,1,  -1,-1,1    ;// v7-v4-v3-v2
Data.GLfloat 1,-1,-1,  -1,-1,-1,  -1,1,-1,  1,1,-1		;   // v4-v7-v6-v5

EndDataSection 
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Équivalence Tableau en C vs PB

Message par Guimauve »

Donc tu confirme que GLFloat vertice[] = {} en langage C revient à faire Vertice.i = AllocateMemory() avec PB.

C'est bien ce qu'il me semblait, apparemment les commandes OpenGL disponible sous Windows sont boguées, passer un bloc mémoire ne fonctionnait pas alors que passer les vertices 1 à 1 fonctionnait. Maintenant que je suis Linux Ubuntu 9.10 x64 à 99.9% je vais me remettre dans le développement d'un jeu 3D très sérieusement avant le retour dans l'arène prévu à la fin avril.

Merci à toi.

A+
Guimauve
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Équivalence Tableau en C vs PB

Message par djes »

Oui, enfin j'ai utilisé un pointeur, et je ne suis pas un vrai spécialiste de l'opengl. Je ne sais pas si c'est si buggé... OpenGL est utilisé dans le milieu pro sur toutes les plateformes, mais c'est sûr que les implémentations diffèrent; cependant, on peut tester les capacités afin d'adapter son code.
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Équivalence Tableau en C vs PB

Message par flaith »

Guimauve a écrit :...je vais me remettre dans le développement d'un jeu 3D très sérieusement avant le retour dans l'arène prévu à la fin avril...
Tie fighter :?: :D
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Re: Équivalence Tableau en C vs PB

Message par cha0s »

Guimauve a écrit :Donc tu confirme que GLFloat vertice[] = {} en langage C revient à faire Vertice.i = AllocateMemory() avec PB.

C'est bien ce qu'il me semblait, apparemment les commandes OpenGL disponible sous Windows sont boguées, passer un bloc mémoire ne fonctionnait pas alors que passer les vertices 1 à 1 fonctionnait.
tu a utilisé une DLL ? car la mémoire n'est pas partagé entre le programme et cette dernière ce qui donne une jolie erreur de segmentation (accès mémoire non autorisé), pareil si tu te trompe dans les tailles de buffer.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Équivalence Tableau en C vs PB

Message par Guimauve »

flaith a écrit :
Guimauve a écrit :...je vais me remettre dans le développement d'un jeu 3D très sérieusement avant le retour dans l'arène prévu à la fin avril...
Tie fighter :?: :D
Je ne sais pas trop ce que ça va donner, ça va être un mélange du jeu Descent 3 et du jeu X-Wing Alliance. Mais de tout façon, la manière dont je vois le projet il sera possible de faire des paquetages (modèles 3D, missions, etc) afin d'ajouter des histoires différentes autant qu'il y a de place sur le disque dur. Il n'y aura pas d'information "HARD CODED" dans l'exe comme c'est le cas pour les jeux de la série X-Wing, TIE Fighter, etc. De plus, j'espère que tu es un fan de Linux car je ne crois pas que je vais développer pour les autres plateformes. Personnellement, Windows 7, je travaille avec pendant 10-15 minutes et je perds le contrôle complètement.

Image
chaos a écrit :tu a utilisé une DLL ? car la mémoire n'est pas partagé entre le programme et cette dernière ce qui donne une jolie erreur de segmentation (accès mémoire non autorisé), pareil si tu te trompe dans les tailles de buffer.
Ce sont les commandes disponibles depuis l'API Windows, le dernier test remonte à Octobre 2008.

A+
Guimauve
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Équivalence Tableau en C vs PB

Message par flaith »

Guimauve a écrit :...De plus, j'espère que tu es un fan de Linux car je ne crois pas que je vais développer pour les autres plateformes...
C'est le cas, et je ne peux que t'encourager dans cette voie, car il n'y a pas beaucoup de développement de jeux, ca bouge quand même mais ce n'est pas la panacée
J'attends vivement tes prochaines créations
:mrgreen:
Répondre