Pourrais t on bannir : freedom333 ou du moins l avertir ? merci
TomtomClancy : desole je suis pas assez doué en maths et opengl pour t aider, par contre si j ai bien compris tu veux creer un tableau depuis plusieur sous tableau ?
Ni math ni openGL, c´est du directX, enfin le probleme est juste au niveau C++.
Et oui tu as bien compris. c´est ce que je veux faire, mais sans copier par valeur mais plutot par pointeur car bien plus rapide.
Et je suis pour le bannissement du zouave du dessus.
- Ecriture en majuscule
- SMS
- c´est du flood héhé
et hop ... vos demande a été transmise ( avertir un admin )
Pour des tableaux dans des tableau, tu fais des pointeurs vers un sous tableau et tu met ces pointeurs dans un tableau de pointeurs ?
hum... pas sure d´avoir tout compris.
sFVFHeightMap **m_heightMap;
m_heightMap = new sFVFHeightMap*[nb_case];
pour chaque case {
m_heightMap[i] = new sFVFHeightMap[nb_point];
}
chaque heightMap[i] contient 840 point pour tracer une zone de 20x20.
dans le frustum culling je selectionne (le cone de vision) les partie a afficher ou non.
mais pour les afficher faut les mettre dans un vertexbuffer, et c´est la que je bloc, pour faire cette operation le plus vite possible. D´ou l´idee d´additionner les pointeurs pour former un seul gros tableau d´affichage.
ton pb est p-e ailleurs ; dans la tres grande majorite des cas, on regenere la quasi totalite des vertex buffers a chaque frame, et la copie des donnees n´est pas un soucis majeur.
- essaye d´estimer la taille des donnees a transferer
- implemente des timers pour verifier que les bottlenecks de ton appi sont bien la ou tu penses qu´ils sont
Rahh !
Je pete un boulon ![]()
Je vien de rejeter un coup d´oeil au petit landscape que tu m´avais montré.. Je vien de m´apercevoir que tu avais une gestion des LOD.
Tu aurais pas par hasard le code source de ce petit terrain ?
Erf! Je comprends pas comment tu fais..
- tu as bien un system de patch pour le terrain, tu regarde pas triangle par triangle si il est dans le cone de vision.
- idem pour les LOD, comment tu fais pour que les jointures passent nikel ?
- Et comment tu stock tout ce petit monde ?
désolé ca fait beaucoup de question tout ca ![]()
"Je vien de rejeter un coup d´oeil au petit landscape que tu m´avais montré.. Je vien de m´apercevoir que tu avais une gestion des LOD. "
la version publiee n´avait pas le morphing (je n´ai fait le vertes shader pour ca que plus tard) et on peut voir le "popping" sur la geometry, quand les LODs changent.
"Tu aurais pas par hasard le code source de ce petit terrain ?"
si, mais ca ne va pas bcp t´aider ; mieux vaut exposer les principes des techniques utilisees, pour que tu puisses l´implementer proprement a ta maniere.
(cherches geomorphing dans google pour des whitepapers traitant du sujet, si besoin)
"tu as bien un system de patch pour le terrain, tu regarde pas triangle par triangle si il est dans le cone de vision."
j´ai bien un systeme de patches (de 8x8 quads, si ma memoire est bonne). Mes patches sont dans un quadtree qui couvre tout le landscape : avec un culling recursif si l´arbre, il est TRES rapide de determiner quels quads sont visibles (un quad partiellement visible donnera qq triangles en dehors du frustum, mais peut importe)
"comment tu fais pour que les jointures passent nikel ? "
avant de collecter les vertices pour le rendu, tu determines les LODs de chaque patchs ; au moment de collecter les vertices, selon les voisins d´un patch, tu generes des transitions (i.e. connection pour passer de 4 triangles a 2 triangles, etc.)
pour aller plus vite, tu precalc tout ca, et pour remplir ton vertex buffer, tu ne fais que des memcpy selectifs (et utilise des primitives indexees !! ..)
"Et comment tu stock tout ce petit monde ? "
les vertices sont statiques, je les memcpy a la volee dans des VB. J´ai plusieurs sets d´indices pour chaque patch, que je copie selectivement vers des IB (selon les transitions de LOD).
Le VB unique qui sert au rendu est regenere a chaque frame, pareil pour l´IB (selon les cas, on pourrait avoir un VB static, et rendre plusieurs morceaux disjoints avec des IB adaptes)
l´idee majeure, c´est : tes vertices doivent etre pret a etre collectes, tu dois utiliser des primitives indexees si possible, la generation des VB et IB doit etre la moins couteuse possible (des memcpy depuis des blocs de "baked data" ou tout est deja pret, c´est parfait), le mecanisme de "collection" des vertices doit etre simple et efficace, le format de tes vertex doit etre le plus simple possible, quitte a equilibrer en faisant un peu plus de boulot dans les shaders (> une bonne balance CPU/GPU pour que aucun ne soit idle)
Je préfère rester honnete et vous dire que je ne sais RIEN de C++... C´est pourquoi je cherche un bon bouquin, pas trop long(!!!) et facile à comprendre (pour personne ultra débutantes...) ![]()
essaye ce livre:
http://www.amazon.fr/exec/obidos/ASIN/2744070866/qid=1147020151/sr=1-23/ref=sr_1_2_23/403-4394476-5655612
(pour le c) il doit y avoir la même collection en c++
tu peux aussi essayer ça:
http://www.priceminister.com/offer/buy/321973/Silverio-Nino-Langage-C-Livre.html
peut on savoir si un caractere est dans une chaine de caractere ?
exemple :
if("s" == dansStr("salut")) cout << "ok";
Utilises les fonctions du C pour ça ![]()
Problème de passage de tableau par référence résolu. Merci ![]()
alex6891 , je code en c++ mais je ne vois aucune fonction dans la class string qui permet ceci :/
countag: pourquoi ne pas l´ecrire toi meme ?
je vais essaier, on va voir
Facile a faire en plus !
Tu parcours ton tableau de caractere avec un for, et si un caractere est comme celui que tu veux, c´est ok ![]()
Bonsoir
J´ai un probleme avec la SDL...
Je fait mon code, en le separent deja en deux fixhiers, main.cpp et main.h
main.h contient toutes les fonctions.
main.cpp contient le main seulement et inclue main.h
Si je compile et execute, aucunes erreur, ca se lance ensuite, ecran noire...
Bizarre...
Bon, je copie le dossier de projet, dans sa copie, je regroupe TOUT dans le main, exepté la fonction de JYY ram/vram.
Et la ? Ca se compile, puis s´execute, et ca fonctionne correctement.
je vais faire un tours dans les deux dossiers, dans le dossier de la copie, qui a ensuite fonctionner, je retrouve un .layout
Quesque cela veut dire ?
Pourquoi ca n´a pas fonctionner dans le premier cas ?
Merci a tous ceux qui prendront la peine de me lire ![]()
Et un gros merci a ceux qui me repondront
![]()
Si tu veux faire un programme en fichier séparés, fait le ainsi :
un cas simple : 3 fichiers :
main.cpp
truc.h
truc.cpp
(évite les main.h, il n´y en a pas trop d´intéret je pense)
Dans "truc.cpp" tu mets toutes les fonctions relatives a "truc".
Tu mets également cette ligne :
Dans "truc.h" tu mets les prototypes de ces foncti
ons, c´est a dire les fonctions sans leur corps.
Dans le main.cpp, tu mets
Et puis tu fais ton main...
regarde dans mon exemple de la promenade comment j´ai fait, par exemple avec futils.h et futils.cpp
Ok je vais proceder ainsi, mais en gros, tout ce qu´il y a dans main.h equivaut a truc.cpp et truc.h