J'essai de traduire un code C++ d'un tutoriel en Delphi, et je bute sur ça :La discussion complète : http://www.developpez.net/forums/d66...o/#post3908672Code:((float*)NULL + (3)
Y a t'il un expert en pointeur dans la salle ?
:hola:
Version imprimable
J'essai de traduire un code C++ d'un tutoriel en Delphi, et je bute sur ça :La discussion complète : http://www.developpez.net/forums/d66...o/#post3908672Code:((float*)NULL + (3)
Y a t'il un expert en pointeur dans la salle ?
:hola:
Salut,
Je ne me bombarderait pas expert en pointeur, par contre, je peux te faire partager mon ignorance... :)
De ce que je comprends, l'opération ((float*)NULL + 3) prend un pointeur, de type (float*), qui vaut NULL, et l'avance de 3 cases, c'est-à-dire de 3*sizeof(float). Je miserais donc sur un résultat égal à 3*sizeof(float) - je pense que tu étais parvenu au même résultat, non?
D'après le post auquel tu fais référence, le résultat de cette opération est d'ailleurs utilisé comme un offset.
[EDIT]
En lisant la fin de l'autre post, je vois que c'est pour coller au prototype de la fonction glVertexPointer - le dernier paramètre est un pointeur. Pourquoi? Je ne sais pas quoi te dire.
Quel est le prototype de la même fonction en Delphi?
Tu devrais pouvoir obtenir le même résultat en faisant
Code:Pointer( 3*Sizeof(Double) ); //à adapter : Double ou Extended ou...
Ben dans ce cas, je comprends pas comment on peut manipuler un pointeur qui n'est pas déclaré... ?
Car si NULL signifie comme tu dis "qui vaut null", alors à quel moment lui donne t'on un nom à ce pauvre petit pointeur ?
On peut lui donner null comme valeur, mais faudrait il pas le déclarer avant ?
Ou alors si "NULL" est son nom, alors celui de son père doit être "personne"... :?8O
NULL du C++ = nil du Delphi. Ca vaut toujours 0 et ça n'est déclaré nulle part : c'est dans le langage.
http://www.developpez.net/forums/d66...o/#post3927353
J'ai testé, mais ça ne fonctionne pas mieux. :cry:
Violation d'accès ... :bug:
salut
je pense que tu peut le traduire par un truc du genre :
si j'ai tou bien compris c'est un decalage d'origineCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 type TVertex=record x,y,z : Single; end; ... va: array of TVertex; ... glEnableClientState(GL_VERTEX_ARRAY); ... glVertexPointer(3, GL_FLOAT,SizeOf(TVertex), Pointer(Integer(va) +sizeof(TVertex)*3)); ou glVertexPointer(3, GL_FLOAT,0, Pointer(@va[3].x)); ou glVertexPointer(3, GL_FLOAT, 0,nil); ... glDisableClientState(GL_VERTEX_ARRAY);
voir ici pour le detail sur glvertexpointer()
salut
en fait si c'est bien en tableau mémoire mais opengl la mapper
afin d'y accéder a partir de l'api
tu peut afficher tout ou parti de ce tableau
@+ Phil
Bon, la bonne syntaxe semble être celle-là :
Il fallait juste charger dynamiquement les fonctions.Code:_glVertexPointer(3, GL_FLOAT, 6 * SizeOf(GLfloat), Pointer(3 * SizeOf(GLfloat)));
Merci à tous pour votre aide.
;)