|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Bonjour, j'utilise un thread pour charger le content de la scene.
Le soucis c'est que une fois sur 50 SpriteBatch.End() plante avec une invalid operation exception. Mais ce qui m'enerve le plus c'est que le thread qui load le content est dans un etat de sleep a ce moment (car il y a un content manager locked) En gros j'ai le main thread qui draw et qui plante sur le sb.end() et le loading thread qui est dans un etat de sleep... Avez vous deja eu a faire a ce genre de probleme. Quelle est la bonne maniere pour debugger cela. Merci. |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 451 ![]() |
Cette technique a toujours fonctionné pour moi :
http://blogs.msdn.com/b/shawnhar/arc...nimations.aspx
__________________
Suivez le développement de Chibis Bomba twitter : https://twitter.com/MoD_DiB DevBlog : http://moddib.blogspot.fr/ |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Salut, en faite tu draw l'animation de loading dans le thread de loading ensuite tu appelles Present pour display?
Car moi je draw le loading depuis le main thread. Merci |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 451 ![]() |
Disons qu'en fait le loading se passe dans le thread principale et l'affichage dans un autre thread.
__________________
Suivez le développement de Chibis Bomba twitter : https://twitter.com/MoD_DiB DevBlog : http://moddib.blogspot.fr/ |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
merci je vais tester cela meme si je crois que ca ne va pas changer grand chose...
j'essaie de vous tenir au courant lorsque je patche. |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
effectivement passer le chargement sur le thread principal c'est bien plus rapide.
Sur pc je passe de 4 secondes a environ 0.75 seconde. (Bon sur pc, la xbox ca reste long...) Sinon question perf: - pour le draw call, on a un systeme de layer avec chaque layer un scroll speed different. Mais pour chaque layer on a un Sb.begin()/End() different. Du coup avec 9 layer je suppose qu'on perd beaucoup en perf?(si vous avez des retours d'experiences sur ce point.) Merci. |
|
|
00
|
|
|
#7 | |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 451 ![]() |
Citation:
Si par contre tu recherches des performances maximales la première chose à faire est malheureusement de recoder son propre spritebach
__________________
Suivez le développement de Chibis Bomba twitter : https://twitter.com/MoD_DiB DevBlog : http://moddib.blogspot.fr/ |
|
|
|
00
|
|
|
#8 | ||||
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Erf...
Cette bobox commence vraiment a m'enerver. Par exemple je thread l'ia j'ai exactement les meme perf que sans thread. Pourtant je fais bien Code :
De plus j'ai deux methodes de chargement, une avec des fichiers binaires serializer et une autre avec des fichiers xml mais je met sensiblement le meme temps. Ce qui m'etonne fortement car Code :
Meme si je pense qu'ils ne sont pas code en c#... EDIT: quelle est la methode de profiling la plus indicative, CPU ou temps? |
||||
|
|
00
|
|
|
#9 | ||
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 451 ![]() |
La vraie question c'est pourquoi travailles tu avec des threads ?
Mis à part si tu refais le Cry Engine c'est très rare d'en avoir réellement besoin et le temps gagné à ne pas les utiliser permet de passer du temps sur des vrais optimisations souvent plus utiles. Concernant ton chargement il faut profiler plus en détails. Citation:
Le problème ne vient pas du C# car sur PC les performances sont bonnes mais surtout du micro framework .net absolument pas adapté à la xbox. Citation:
__________________
Suivez le développement de Chibis Bomba twitter : https://twitter.com/MoD_DiB DevBlog : http://moddib.blogspot.fr/ |
||
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Pour les optis la j'ai fait une passe pour supprimer toutes les string en dur.
Surtout sur les shader, les Effect.Technique et Effect.Parameters j'ai repasse tout ca en int. ca gagne quelques fps (cool Pour le loading je n'ai quasiment aucune spritesheet que des sprite unique du coup si je passe tout ca en spritesheet je pense pouvoir gagner du temps de chargement... |
|
|
00
|
|
|
#11 | |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 451 ![]() |
Citation:
http://easypak.codeplex.com/
__________________
Suivez le développement de Chibis Bomba twitter : https://twitter.com/MoD_DiB DevBlog : http://moddib.blogspot.fr/ |
|
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Oai, j'ai pris le packer de xna creator club.
Merci EDIT: on est limite a une taille de 4096 .. dommage, j'aurais foutu tout le content dans une spritesheet
|
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Pour recoder le spritebatch.Draw tu fais ca avec Graphics.DrawUserIndexedPrimitive?
Pour la rotation l'origin et l'orgin tu fais ca direct dans le pixelshader avec un peu de math? Pour le rectangle source et le scale il faut faire ca au niveau du binding de la texture je suppose. Si tu sais dire a la louche cb de % c'est plus performant, meme si je sais que c'est dur d'estimer. Merci. |
|
|
00
|
|
|
#14 | ||||
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 451 ![]() |
Citation:
Citation:
Citation:
Citation:
Ca permet aussi et surtout une plus grande flexibilité sur des besoins spécifiques.
__________________
Suivez le développement de Chibis Bomba twitter : https://twitter.com/MoD_DiB DevBlog : http://moddib.blogspot.fr/ |
||||
|
|
00
|
|
|
#15 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Ok merci,
moi je n'ai q'environ 40 SpriteBatch.draw par frame, l'espace est partitionne. Donc ce n'est pas enorme. Mais bon il faut que je vois si j'ai le temps de recoder, mais bon c'est sur qu'avec un sort.textured on doit gagner encore en perf. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com