Les pointeurs for newbie

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 10 oct. 2003 à 11:13
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 21 oct. 2003 à 12:06
Salut tout le monde,
j'ai comme projet avec plusieurs personnes de mon école de créer un petit jeu en 3D à l'aide de C#. Mais en essayant de manipuler les pointeurs (ce qui est une quasi obligation pour les jeux) j'ai vu que c'était un vrai casse tête avec des unsafe partout et un problème pour faire des pointeurs d'objets managés (?).
En gros :
class toto
{
toto *zaza = this; //Interdit
}
J'ai plein d'erreurs partout. Ce qui me fais penser que C# n'est pas vraiment fait pour faire du pointeur !!!
Si quelqu'un peut m'aider sur les pointeurs je suis tout ouie !!!! :big)
Merci

10 réponses

Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
10 oct. 2003 à 11:41
premiere chose, la prochaine fois ne fait qu'un post,
tu n'obtiendras pas plus vite ta reponse si tu post 10 fois la meme question!

deuxiememt:
essai:
class toto
{
toto zaza = this;
}


je t'assure ca marche ;)
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
10 oct. 2003 à 12:46
:big) Neodante :big)

Désolé mais étant donné certaines réponses pas immédiates du serveur CS ça arrive parfois de mettre 2 messages... (sur plus de 300 messages ça m'est arrivé que 2 ou 3 fois...)
Etant donné ta réponse rapide je vois que de toutes manières on a pas besoin de ça !

Pour revenir à notre sujet, zaza n'est pas un pointeur mais une référence donc ça marche mais ca ne résoud pas vraiment mon problème de pointeur....snifff :dissapprove)
Mais le mécanisme est similaire et donc je vais essayer de refaire mon code avec les références.

Au fait comment fais-tu pour mettre ton code en grisé dans ton message ?

Merci qd même
@+
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
10 oct. 2003 à 12:57
regarde les boutons (tous) sous la fenetre de reponse au messages :big)
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
10 oct. 2003 à 14:38
:big) Neodante :big)

OK merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gillescpp Messages postés 33 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 22 octobre 2007
18 oct. 2003 à 12:01
moi, j'a iabsolument besoin des pointeurs car les fonctions de opengl ne me permettent pas de passer par les référencs.

Si tu sais comment on peut obtenir les adresses d'objet comme "float[]" ou autre, laisse moi ton eemple dans le forum car je coince vraiment.

merci
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
19 oct. 2003 à 17:00
:big) Neodante :big)

Enfin quelqu'un qui à les même prob que moi avec C#...
Même si la prog avec C" n'est aps vraiment adapté aux jeux...
@+
0
gillescpp Messages postés 33 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 22 octobre 2007
20 oct. 2003 à 08:24
Pour les pointeurs, visiblement un truc comme


unsafe {
int a = 1;
int* p_a = &a;
}


semble fonctionner chez moi.

Pour opengl, nul besoin des pointeurs car en fait, j'ai decouvert hier des objets qui les remplacent.

Donc, en fouillant la faq de csgl, j'ai trouvé le remlacant des pointeurs :

c'est dans CsGL.Pointeurs
une classepar type de données c# :

PFloat pour float[],
PInt8 pour sbyte[],
PDouble pour double[],
...

vraisemblablement, il sagit de pointeurs fixes auquels est alloué un espace defini.

voci un exemple qui affiche tros points blancs :

static void affichepolygons()
{

float[] p1 = {
1.0f, 1.0f, 1.0f, -0.5f, 0.5f, 0.0f,		1.0f, 1.0f, 1.0f, 0.0f, -0.5f, 0.0f,
1.0f, 1.0f, 1.0f, 0.5f, 0.0f, 0.0f
                  };

sbyte[] p4 = {0, 1, 2};

PFloat p_p1 = new PFloat(9);
PInt8 p_p4 = new CsGL.Pointers.PInt8(3);
//copier le contenu des tableaux p1 et p4 dans les nouveaux tableaux
                PFloat.Copy(p_p1, 0, p1, 0, 9);
PInt8.Copy(p_p4, 0, p4, 0, 3);

//je passe par la ; il parait que c'est plus rapide
GL.glInterleavedArrays(GL.GL_C3F_V3F, 0, p_p1);
GL.glDrawElements(GL.GL_POINTS, 3, GL.GL_UNSIGNED_BYTE, p_p4);

}



Si ca interresse, je mettrai le source complet sur le site.
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
20 oct. 2003 à 14:13
:big) Neodante :big)

Je veux bien une petite source !!
@+
0
gillescpp Messages postés 33 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 22 octobre 2007
21 oct. 2003 à 10:40
la source est mise sous le titre "OPENGL SANS POINTEURS EN C#"

elle a ete un peu modifiée et affiche maintenant deux triangles autour desquels on effectue une rotation.
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
21 oct. 2003 à 12:06
:big) Neodante :big)

OK merci beaucoup !!!
@+
0
Rejoignez-nous