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 :

Tableau de float4


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut Tableau de float4
    Bonjour à tous,

    Je début dans la programmation de shaders en HLSL, et j'ai une question.

    J'ai déclaré un tableau de la sorte :

    float4 LightPos[MAX_NB_LUMIERE] : Position = {
    float4(5,0.5,-1,0) ,
    float4(-5,0.5,-1,0) ,
    float4(0,0.5,-4,0)
    };


    Jusque la tout va bien.

    Mais j'ai besoin de rajouter d'autres lignes à mon tableau...
    J'ai donc fait comme ceci :

    float4 LightPos[MAX_NB_LUMIERE] : Position = {
    float4(5,0.5,-1,0) ,
    float4(-5,0.5,-1,0) ,
    float4(0,0.5,-4,0),
    float4(-5,0.5,-1,0)
    };

    Le problème c'est que visiblement je depasse les dimensions autorisés pour un tableau.

    Voici l'erreur qui m'est renvoyé :

    Idees.fx(50): error X3017: 'LightPos': cannot convert from 'const struct{16}' to 'float4'

    Quelqu'un a t-il une idée de comment je puisse faire fonctionner mon code?
    Comment faites-vous pour faire passer des tableaux de float4 de votre application à votre shader HLSL ?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    float4 LightPos[MAX_NB_LUMIERE] : Position = {
    float4(5,0.5,-1,0) ,
    float4(-5,0.5,-1,0) ,
    float4(0,0.5,-4,0),
    float4(-5,0.5,-1,0)
    };
    Dans ce code , tu remplie en faite que la première case du tableau de float4 , par 4 float 4.

    Soit tu essai de remplir un float4 par 4 autre float4.
    Et non de remplir le tableau.
    Enfin j'ai du mal à m'expliquer sur ce coup, mais je crois que le code qui t'interesse semble être plus celui ci ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float4 LightPos[MAX_NB_LUMIERE] : Position = 
    { float4(5,0.5,-1,0) } ,
    { float4(-5,0.5,-1,0) } ,
    { float4(0,0.5,-4,0) },
    { float4(-5,0.5,-1,0) };
    Et normalement dans ce cas là il va remplir les cases du tableau ...

    Du coup tu peux ecrire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float4 LightPos[MAX_NB_LUMIERE] : Position = 
    { { 5 , 0.5 , -1 , 0 } } ,
    { { -5 , 0.5 , -1 , 0 } } ,
    { { 0 , 0.5 , -4 , 0 } },
    { { -5 , 0.5 , -1 , 0 } };
    Peut être que j'ai dit une bétise monumentale , mais test , et dis le moi
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut
    Bonjour LittleWhite,

    Je viens d'essayer tes deux codes, mais ca ne veut pas compiler.

    Mais je ne comprends pas trop comment on peut faire pour passer des tableaux en tweakables. :-/

    Très clairement ce que je cherche à faire, c'est un shader qui prend en paramètres N lumières (donc N LightPos, N LightIntensity, N LightColor....). Du coup j'imaginais qu'il y avait un moyen simple de faire passer mes 3 tableaux.

    Comment feriez-vous ? Ca doit surement être possible non ??

    (j'aimerais ne pas dépasser les version 2.0 de px shader et vertex shader)


    ++

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Excuse pour ma réponse fausse ...

    Perso je ne fais pas de px shader , et autre vertex shader ... mais je ne pense pas que cela pose trop de problème pour ton cas.

    Tu peux peut être utilisée un vector de la std , mais je pense qu'après cela va te bloquer pour l'utilisation dans les fonctions de la bibliotèques graphiques.

    Un tableau dynamique peut être bien aussi

    genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float4* myLight;
     
    myLight = malloc ( NUMBER_LIGHT * sizeof(float4) );
    et après tu lis à partir d'un fichier , ou d'autre part ,pour charger les infos.

    Bon , je crois que je vais arrêter d'ecrire des réponses idiotes . ( la fonction qui prend les shader elle a qu'elle prototype? )
    Au sinon je verrai bien un tableau , pour les position , un autre pour les intensités , un autre pour les colours.
    Et après quand tu veux acceder à une lampe, tu passe le même indice à tous les tableaux ...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51
  2. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  3. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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