Bonjour,
J'essaye de programmer une texture animée sur un objet 3d pour afficher un instrument en 3d sur un Windows Phone 7, comme une montre, dont les chiffres sont ma 1ère texture2D et l'aiguille ma deuxième texture2D.
J'utilise pour ça 2 textures (128 X 128).
La technique je pense c'est dans un premier temps de déclarer dans loadContent() = 3 textures 2D, mon objet 3D, un objet RenderTarget2D et un objet SpriteBatch, puis dans Draw()= j'utilise le RenderTarget2D comme buffer, j'affiche avec SpriteBatch ma première texture (=le fond de ma montre) puis je fais tourner ma deuxième texture (= l'aiguille), puis je quitte Spritebatch., je libère le Buffer et j'affiche dans ma 3 ème texture le contenu du RenderTarget 2D.
mais ça ne marche pas !!
la texture de mon objet ne change pas, je joins la partie du code décrit plus haut:
Je n'ai pas trouvé grand chose sur le sujet sur le Net et dans la littérature spécialisée, d'autant que s'agissant d'un dévelopement sur Windows phone je ne peux pas utiliser les Shaders.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); GraphicsDevice.SetRenderTarget(renderTarget); GraphicsDevice.Clear(Color.Transparent); spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); spriteBatch.Draw(Base_Text, new Rectangle(0, 0, 128, 128), Base_Text.Bounds, Color.White); spriteBatch.Draw(second_Text, new Rectangle(0, 0, 128, 128), second_Text.Bounds, Color.White, 0.3f, new Vector2(64, 64), SpriteEffects.None, 1); spriteBatch.End(); GraphicsDevice.SetRenderTarget(null); final_Text = renderTexture; DrawModel(); base.Draw(gameTime); }
Je vous remercie de votre aide si vous avez une idée, bonne après midi.
Jeangil
Partager