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 :

Fonctions TextureLod et TextureLodOffSet indisponibles car version GLSL 1.2 détectée [OpenGL 4.x]


Sujet :

OpenGL

  1. #1
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut Fonctions TextureLod et TextureLodOffSet indisponibles car version GLSL 1.2 détectée
    Bonjour à tous,

    Alors mon problème est assez complexe et difficile à expliquer mais je tâcherais d'essayer de le présenter de la façon la plus claire si possible.

    Je travaille avec OpenGL version??? et je souhaiterais appliquer un masque sur une image afin de pouvoir découper le visage détecté sur celle ci.

    Premièrement j'ai du mal à comprendre quelle version est présente sur mon pc, pour cela j'ai fait des recherches et j'ai cru comprendre que la version OpenGL installée dépend directement de la carte graphique et pour ma part il s'agit d'une carte graphique intel hd graphics 4000. Je suis allé sur le site d'intel pour mettre à jour les derniers drivers de ma carte. J'ai ensuite installé le logiciel Geeks 3D GPU (en pièce jointe) qui me donne la version de GLSL présente sur mon ordinateur.

    Voilà le deuxièmement, GLSL. Tout le problème est liée à cette version GLSL car selon le tableau présent sur ce site :

    https://www.opengl.org/sdk/docs/mang...eLodOffset.xml

    On constate que les fonctions texturelod et texturelodoffset seraient disponible dès la version 1.3 de GLSL et je suis supposé être en version 4.0 et je ne comprends pas pourquoi quand je lis un shader ces fonctions sont dites indisponibles car ma version serait en 1.2.
    Images attachées Images attachées   

  2. #2
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    Quelqu'un aurait il une idée de comment Visual Studio interprète la version GLSL présente sur a carte graphique pour ensuite effectuer les traitements?

    Parce qu'à mon humble avis il interprète mal ma version GLSL et ne va pas chercher les fonctions TextureLod et TextureLodOffset qui sont elles disponibles en version 4.0.

    Tout ceci n'est qu'hypothèse bien sûr car j'ai du mal à démystifier comment à la lecture de OpenGL Visual Studio devine la version de cette librairie

    A l'aide

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    La version d'OpenGL dépend de deux choses :
    • la carte graphique (ce qu'elle est matériellement capable de faire) ;
    • les pilotes graphiques (les fonctions de la spécification réellement en place).

    Et malheureusement, les deux peuvent différés, comme les gars de Valve le disent assez souvent.

    Bref, revenons à vos moutons.

    La version d'OpenGL détectée par votre programme dépend d'une chose en plus. Elle dépend de la version avec laquelle vous initialisé le contexte OpenGL. En effet, actuellement on peut créer des contextes OpenGL 2, ou OpenGL 3, ou OpenGL 4 et on peut même choisir leur profil de compatibilité.
    Donc, je vous conseille de bien vérifier cette premier chose, la création du contexte OpenGL.

    Ensuite, en entête du shader, il faut maintenant écrire :
    Cela permet d'indiquer au GPU, la version du GLSL à utiliser pour traiter le shader. Ici, c'est la version équivalente à OpenGL 3.3. Pour vous, je crois que vous devez écrire :

    J'imagine que votre soucis ce situe ici, et j'imagine que la carte graphique, ne voyant pas de telle directive, estime avoir un shader en GLSL 1.2.
    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.

  4. #4
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    Salut LittleWhite,

    Merci pour ta réponse, j'essaierais ta solution dès lundi et franchement si ça marche tu m'enlèves une grosse épine du pied car je n'avais vraiment pas idée de comment faire comprendre à Visual que j'étais en GLSL 4.0.

    Cependant, j'ai une question sur le contexte OpenGL dont tu as parlé. Comment le vérifie t-on ?

    Si Visual interprète que je suis en version GLSL 1.2 cela implique que je suis dans un contexte OpenGL 2.1 je crois (pas sûr).

    Le fait de préciser au GPU que je suis en #version 400 modifie implicitement le contexte OpenGL en 4.0 ?

    Et le fait de se mettre en contexte OpenGL 4.0 modifie implicitement la version GLSL courante en 4.0 ?

    Je sais ça fait beaucoup de questions mais j'ai tellement galéré sur cette partie que j'ai besoin de bien la comprendre

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Les contextes, c'est à l'initialisation de la fenêtre que cela se passe.
    Comment le vérifie t-on ?
    C'est vous qui le choisissez. Cela se fait à travers EGL/WGL/XGL, ou plus haut niveau, SDL, SFML, à travers les GL attributes (pour la SDL, du moins).

    Si Visual interprète que je suis en version GLSL 1.2 cela implique que je suis dans un contexte OpenGL 2.1 je crois (pas sûr).
    Non, je ne pense pas. Et ce n'est pas Visual, Visual n'est qu'un éditeur intégrant un compilateur. Il fait rien avec OpenGL, il interprète rien. La version du GLSL peut être sélectionnée indépendamment (enfin, presque indépendamment, car faut que OpenGL supporte la chose) grâce à la directive que j'ai montré.

    Le fait de préciser au GPU que je suis en #version 400 modifie implicitement le contexte OpenGL en 4.0 ?
    Absolument pas. Le contexte est créé bien avant la lecture des shaders, donc le contexte est créé bien avant de savoir que vous demande #version 400 dans le shader. Par contre, si vous utilisez #version 400 alors que vous êtes/avez un contexte OpenGL < 4, le compilateur de shader (qui est dans la carte graphique) va vous dire que la version est inconnue/non supportée.

    Et le fait de se mettre en contexte OpenGL 4.0 modifie implicitement la version GLSL courante en 4.0 ?
    Il ne semble pas, sinon vous n'auriez pas eu le problème (enfin, je pense).
    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.

  6. #6
    Futur Membre du Club
    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
    Points : 6
    Points
    6
    Par défaut
    Bonjour LittleWhite,

    Tout d'abord merci pour aide .

    J'ai essayé plusieurs directives dont la #version 400 cela m'a résolu le problème des fonctions textureLod mais m'a généré d'autres erreurs plus graves ne me permettant plus de compiler mon shader. Je pense que cela s'explique tout simplement par les différentes mises à jours apportées à chaque version GLSL permettant de supporter ou non telle ou telle fonction.

    Cependant, avec la directive #version 130 correspondant à GLSL 1.3 je ne rencontre aucun problème, du coup l'ensemble de mes shaders fonctionnent. (comme l'illustre l'image en pièce jointe).

    Merci encore pour toute ton aide, je me sens plus léger et je peux de nouveau avancer dans mon travail

    Ps: Cependant, pour le contexte openGl je suis toujours dans le flou car moi je ne me sers ni de SDL ou autres , j'utilise juste la dll opengl32, la lib et les headers genre gl.h, freeglut.h, glew.h, ...
    Images attachées Images attachées  

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Vous, la gestion de la fenêtre est effectuée par FreeGLUT. C'est FreeGLUT qui créé le contexte OpenGL.
    Il semble que pour choisir la version du contexte, ce soit : glutInitContextVersion mais je ne trouve pas la documentation.
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Mise à jour de la fonction VBA permettant d'afficher la version de Windows
    Par it-worker dans le forum Contribuez
    Réponses: 0
    Dernier message: 13/06/2014, 21h12
  2. [Système]Base de données indisponible car en mode exclusif
    Par karish dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/03/2007, 10h00
  3. Réponses: 16
    Dernier message: 13/03/2007, 11h00
  4. [MySQL] Je cherche à faire fonctionner la fonction ADDTIME sur la version 4.0.13
    Par SURF52 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2005, 16h17

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