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

OpenGL Discussion :

Calcul simple entre deux matrices via la GPU


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par défaut Calcul simple entre deux matrices via la GPU
    Bonjour,

    Tout est dans le titre, j'aimerais pouvoir effectuer un calcul simple entre deux matrices en utilisant la GPU mais je ne sais pas comment m'y prendre.

    J'ai eu à disposition des vertex et fragments shaders mais il semblerait que la GPU les charge bien mais ne les exécute pas correctement car l'image traitée par celle ci ne semble pas modifiée en sortie.

    C'est pour cette raison que j'ai envie via un calcul matriciel simple "vérifier" que la GPU bosse correctement via mon code et si oui, utiliser ce canal pour faire l'ensemble des traitements souhaités.

    Donc toute aide serait la bienvenue

    Merci d'avance à vous!!!!!!

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 150
    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 150
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Vous parlez de calcul de matrices en 4x4, ou de matrice générales ? Dans le second cas, vous devriez utiliser les compute shader, ou OpenCL/CUDA.
    Dans le premier cas, tout se passe en GLSL.

    Vous pouvez déboguer le GLSL avec gDEBugger, par exemple.
    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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par défaut
    Bonjour LittleWhite,

    Merci une fois de plus pour ta réactivité et ta disponibilité, je parle d'une matrice simple. En fait le projet sur lequel je bosse me génère des erreurs opengl error 1286 lors de l'execution de mes shaders et vu la grosseur du projet il est quasiment impossible de savoir d'où cela provient. Et j'ai même pu constater qu'à l'initialisation survient le premier problème avec l'utilisation de la fonction glClear qui a pour but de vider les tampons. Elle me génère l'erreur 1286.

    C'est pour cette raison que je voulais indépendamment de mon projet en n'utilisant que Glsl, c'est à dire sans SDL ou autre, pouvoir faire travailler ma carte graphique via un calcul matriciel ou autre, une simple opération mathématique. Et par la suite, si jamais le résultat s'avérait concluant, réadapter l'ensemble du projet au fur et à mesure en essayant de reproduire l'ensemble des algorithmes mathématiques de traitement d'images.

    Je ne sais pas si j'ai été clair?

    Dans tous les cas si tu pouvais me fournir un bout de code simple à tester, ainsi que la procédure à suivre je t'en serais infiniment reconnaissant

    Après je peux comprendre que tu n'aies pas que ça à faire, mais cela fait un moment déjà que je suis à l'étape où je souhaite interagir avec ma carte graphique et ce sans succès Mes données d'entrées et de sorties restants identiques

    Merci d'avance et merci encore pour ton aide

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 150
    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 150
    Billets dans le blog
    150
    Par défaut
    Mis à part en OpenCL/CUDA, il faut ouvrir une fenêtre (et un contexte OpenGL) pour faire du GLSL (pour agir avec le GPU). L'ouverture de la fenêtre et du contexte est énormément facilité par SDL/ou autre bibliothèque de fenêtrage. Vous ne pouvez pas vous en passer.
    Elle dit quoi votre erreur ? Elle vient d'où ? Du compilateur ou du programme ? Y a t-il un message un peu plus complet ?
    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.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par défaut
    Rebonjour,

    J'ai créé une fonction qui s'intitule GLH_CHECKERROR() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    GLH_CHECKERROR() {
    const GLenum glerror = glGetError();
     if (glerror != GL_NO_ERROR) {printf("%s:%s:%d: opengl error %d\n", __FILE__, __FUNCTION__, __LINE__, glerror);}
    }
    J'utilise donc glGetError() qui est une fonction opengl qui renvoie plusieurs types d'erreurs et ci dessous la liste des erreurs dont la 1286 :

    https://www.opengl.org/wiki/OpenGL_Error

    A mon avis c'est une erreur qui provient directement de Opengl. Comme je l'ai dit précédemment quand je fais l'initialisation j'ai un problème qui intervient après glClear qui est censée vider les tampons. J'en suis arrivé à utiliser GLH_CHECKERROR() après chaque appel de fonction Opengl afin de détecter où servenait les erreurs dans mon programme (programme hors shaders).

    Pour le message d'erreur dans le terminal, glGetError() ne renvoie que le numéro de l'erreur openGl rien de plus.

    En espérant avoir été plus clair.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 150
    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 150
    Billets dans le blog
    150
    Par défaut
    Premier conseil :

    Faites une fonction d'affichage des erreurs OpenGL. En soit, c'est un gros switch case, qui, selon l'erreur renvoyer par glGetError() va afficher un message clair, par rapport à ce qui est écrit dans la doc.

    Ensuite, dans ma super calculatrice, 1286, c'est 506 en hexadécimal et donc, c'est : GL_INVALID_FRAMEBUFFER_OPERATION
    Et donc, c'est clair. Votre FBO est mal configuré (car de mémoire, cette erreur arrive pratiquement que pour les FBO).
    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. Optimisation d'un calcul simple entre deux dates
    Par grafik.muzik dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/05/2009, 01h11
  2. calcul délais entre deux dates avec plages horaires
    Par leila eco dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 03/01/2007, 16h51
  3. [Requete] Calcul Somme entre deux temps pour chaque jour
    Par nico33307 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/03/2006, 00h58
  4. [Reseau] Connection entre deux XP via LAN
    Par scifire dans le forum Windows XP
    Réponses: 1
    Dernier message: 11/02/2006, 00h39
  5. Interpolation entre deux matrices
    Par supergrey dans le forum DirectX
    Réponses: 2
    Dernier message: 31/12/2004, 12h53

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