IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Problème d'affichage de texture.


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut Problème d'affichage de texture.
    Bonjour,

    Voici mon problème:
    J'ai créé un menu sous directx en créant des triangles texturés, et cela marche mon menu est fonctionnel (les textures sont là) mais quand j'ai envoyé le code sur un autre pc, on voit les positions des images, mais les images ne sont pas là, après divers test j'ai remarqué que seul le premier pixel en à gauche était affiché, mais en grand, pour chaque image.

    Je travaille avec c#/directx sous Win7/vs2008.
    Le deuxième pc étant sous Xp.(j'ai aussi testé avec un vista).

    voici l'image du menu sur mon pc:
    http://img6.imageshack.us/img6/9909/cocoej.jpg

    voici l'image du menu sur l'autre pc:
    http://img187.imageshack.us/img187/4892/menubug.jpg

    Voici mon code:
    using System;
    using Microsoft.DirectX;
    using Microsoft.DirectX.Direct3D;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace menu
    {
    public partial class Form1 : Form
    {
    private Device device = null;
    private CustomVertex.TransformedTextured[] vertices;
    private Texture texture;
    public Form1()
    {
    InitializeComponent();
    InitializeGraphics();
    this.Text = "Total Conflict C4team";
    CreateTriangle();
    LoadTexturesAndMaterials();
    }
    private void InitializeGraphics()
    {
    PresentParameters Params = new PresentParameters();
    Params.EnableAutoDepthStencil = true;
    Params.AutoDepthStencilFormat = DepthFormat.D16;
    Params.Windowed = true;
    Params.SwapEffect = SwapEffect.Discard;
    device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, Params);
    }
    private void CreateTriangle()
    {
    vertices = new CustomVertex.TransformedTextured[6];
    vertices[0].Position = new Vector4(0f, 0f, 0f, 0f);
    vertices[0].Tu = 0;
    vertices[0].Tv = 0;

    vertices[1].Position = new Vector4(1440f, 900f, 0f, 0f);
    vertices[1].Tu = 1;
    vertices[1].Tv = 1;

    vertices[2].Position = new Vector4(0f, 900f, 0f, 0f);
    vertices[2].Tu = 0;
    vertices[2].Tv = 1;

    vertices[3].Position = new Vector4(1440f, 900f, 0f, 0f);
    vertices[3].Tu = 1;
    vertices[3].Tv = 1;

    vertices[4].Position = new Vector4(0f, 0f, 0f, 0f);
    vertices[4].Tu = 0;
    vertices[4].Tv = 0;

    vertices[5].Position = new Vector4(1440f, 0f, 0f, 0f);
    vertices[5].Tu = 1;
    vertices[5].Tv = 0;
    }

    private void LoadTexturesAndMaterials()
    {
    texture = TextureLoader.FromFile(device, Application.StartupPath + "\\riemerstexture.bmp");
    }

    // La boucle de rendu
    public void Render()
    {
    device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
    device.BeginScene();
    device.VertexFormat = CustomVertex.TransformedTextured.Format;
    device.SetTexture(0, texture);
    device.DrawUserPrimitives(PrimitiveType.TriangleList, 2, vertices);
    device.EndScene();
    device.Present();
    }
    }
    }









    Le code ci-dessus n'est pas le code de du menu des images, mais c'est la base de celui-ci. Et le problème est le même.

    Merci d'avance, Cordialement
    Derbois Corentin

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Par défaut
    En changeant les deux dernières coordonnées du vector4 cela marche mais je ne comprend pas pourquoi certaines valeurs marchent et pas d'autres et pourquoi le code marchais sur mon pc et pas les autres.

    Les valeurs marchent pour vector4(x,x,0.1f,1f).

    Si quelqu'un peut éclairer ce problème je le remercie d'avance

    Cordialement
    Derbois Corentin

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mars 2006
    Messages : 143
    Par défaut
    quand tu donne tes coordonnées de vertex,
    tu es en ObjectSpace

    tes coordonnées doivent être comprise en -1 et 1
    exemple pour un quad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    QuadVertex g_QuadVertices[] =
    {
    	{-1.0f, 1.0f, 0.0f,  0.0f,0.0f },
    	{ 1.0f, 1.0f, 0.0f,  1.0f,0.0f },
    	{-1.0f,-1.0f, 0.0f,  0.0f,1.0f },
    	{ 1.0f,-1.0f, 0.0f,  1.0f,1.0f }
    };
    tu utilise ensuite les matrices du monde de l'objet pour le dimensionner et le placer dans le monde

Discussions similaires

  1. [C#][Monogame] Problème d'affichage de textures
    Par Alterans dans le forum XNA/Monogame
    Réponses: 2
    Dernier message: 21/05/2015, 11h46
  2. [VBO] Problème d'affichage de texture
    Par Lung dans le forum OpenGL
    Réponses: 2
    Dernier message: 22/04/2009, 08h16
  3. Problème affichage de texture.
    Par laflak dans le forum OpenGL
    Réponses: 6
    Dernier message: 29/12/2008, 12h16
  4. Problème d'affichage d'une texture
    Par BruceBoc dans le forum OpenGL
    Réponses: 24
    Dernier message: 25/01/2007, 16h42
  5. [OpenSceneGraph] Problème affichage de texture
    Par PP(Team) dans le forum OpenSceneGraph
    Réponses: 3
    Dernier message: 23/01/2007, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo