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 :

sampler2D dans le hlsl


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut sampler2D dans le hlsl
    Salut, j'ai un petit probleme au niveau du programme (surement tout bete mais bon), je n'arrive pas a envoyer ma texture 2D au pixel shader sous forme de sampler2D pour pouvoir acceder aux pixels de la texture Donc voila si quelqu'un pouvait m'indiquer la fonction a utiliser ça serait sympa. merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    j'ai pas trop compris mais voilà ce que je fais chez moi, dans un fichier effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    texture normalMap;
     
    sampler2D normalMapSampler = sampler_state
    {
        Texture = <normalMap>;
        MinFilter = Linear;
        MagFilter = Linear;
        MipFilter = Linear;
    };
    et du coté cpu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_pEffet->SetTexture( g_htexNormalMap, g_ptexNormalMap );
    avec g_pEffet : l'effet, g_htexNormalMap : le handle vers la variable normalMapSampler de l'effet et g_ptexNormalMap : ma texture.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Merci d'avoir répondu, mais n'y aurait t'il pas un moyen d'acceder aux pixels d'une texture dans un pixel shader sans passer par les effet ?

    Par exemple mettre la texture en variable globale du shader et puis envoyer la texture sans passer par les effet ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    oui oui le fichier effet n'est pas nécessaire, je le précisais juste pour justifier la forme de mon appel à SetTexture

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    ok, merci mais moi je parlais de IDirect3DDevice9::SetTexture et non ID3DXBaseEffect::SetTexture

    Donc dans IDirect3DDevice9::SetTexture je n'ai pas compris comment utiliser le premier parametre DWORD Sampler et surtout comment récupérer la texture dans le pixel shader en HLSL.

    Merci d'avance.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 382
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 382
    Points : 4 936
    Points
    4 936
    Par défaut
    alors si je ne dis pas de bétise,

    dans le shader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sampler vat : register(sx)
    qui va déclarer un sampler (1D, 2D, 3D, CUBE) var qui sera associé à l'étage de texture sx

    donc dans le code cpu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDirect3DDevice9::SetTexture(sx, texture);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Merci, en fait j'avait fait une erreur dans le vertex shader et les coordonnées de texture n'étaient pas envoyée au pixel shader...

Discussions similaires

  1. HLSL : appel d'une texture dans une texture procédurale
    Par StrangeAttractor dans le forum DirectX
    Réponses: 0
    Dernier message: 27/03/2010, 02h37
  2. [HLSL][C++] Lecture du Depth Buffer dans un PS3.0
    Par xterminhate dans le forum DirectX
    Réponses: 6
    Dernier message: 26/09/2006, 00h34
  3. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

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