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 :

Fragment shader - linux vs Win


Sujet :

OpenGL

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 73
    Par défaut Fragment shader - linux vs Win
    Bonjour tout le monde. Je résume, le probleme pour ceux qui auraient eu le même, et j'explique plus en détail apres :

    Sous linux, quel que soit la tête de mon programme de fragment shader, j'ai beau assigner des valeurs en float à gl_fragColor, il ne me réstitue que des couleurs "booléan". Pour etre plus claire, si je fais

    gl_fragColor = vec4(0.75, 0.85, 0.27, 1.0); j'obtiens du NOIR

    si je fais :

    gl_fragColor = vec4(1.0, 0.25, 0.5, 1.0); j'obtien un joli ROUGE

    si je fais :

    gl_fragColor = vec4(1.0, 1.0, 0.5, 1.0); j'obtien un magnifique JAUNE pétant

    Vous aurez compris que toute valeur qui n'est pas "1.0" devient "0.0". j'ai pu observer des réactions étranges du shader, alors meme que le lui assigne une couleur uni, il continue à me faire fonctionne un algorythme qui normalement n'est plus utilisé... enfin bref, les fragment shader c'est tres étrange sous Linux. Je précise que sous Linux comme sous windows, les shaders sont compilés et linké sans probleme et utilisé en hardware ! c'est à dire que je n'ai meme pas le luxe d'obtenir un quelconque message d'erreur de GLSL...

    Là ou c'est emmerdant, c'est que le MEME programme, avec le MEME sahder sous windows, fonctionne tres bien

    Les différences d'implémentation de mon programme sont minimes entre linux et windows, evidemment, je crée une fenetre autrement (utilise X au lieu de Winapi), et j'utilise glx au lieu de wgl, mais le reste, c'est la même chose, et j'insiste, la meme chose.

    Alors évidement, je commence à me poser questions et perdre la boule :
    - Est-ce que c'est moi qui fais pas comme il faut ? (peut-être faut-il utiliser les pbuffer et les fbuffer sous linux pour que les shader fonctionnent correctement ? ça m'étonnerait puisque pas besoins sous windows ?)
    - Est-ce que j'initialise mon front/back buffer sous linux pas comme il faut, ? pourtant si j'utilise l'implémentation standard GL, je n'ai aucun probleme de couleurs que ce soit sous linux ou windows, ça tourne en 24bits + alpha +depth sans probleme tant qu'on utilise pas les shaders...
    - Est-ce que les pilotes ATI de ma carte sous linux chient des bulles avec les shaders ?

    Si quelqu'un pouvais m'éclairer, je lui en suis reconnaissant d'avance...

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    - Est-ce que les pilotes ATI de ma carte sous linux chient des bulles avec les shaders ?
    A priori je pencherais pour cette solution. Mais peut-être aussi qu'il y a une bourde dans ton code, c'est difficile à voir.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 73
    Par défaut
    Citation Envoyé par Laurent Gomila
    A priori je pencherais pour cette solution. Mais peut-être aussi qu'il y a une bourde dans ton code, c'est difficile à voir.
    Ben oui c'est dificile à voir sans le code c'est sur, mais je me vois mal copier coller tout le code respectif qui pourrait etre en cause...
    A mon sens, si c'est dans le code qu'il y'a un probleme, ça ne peut etre qu'au niveau de la création du contexte opengl, car c'est la seule partie du code qui differe entre windows et linux, sachant que le reste est exactement le meme, et il n'y a pas d'erreur possible, puisque ce sont les memes fichiers header qui sont utilisé aux deux compilations séparés...
    Il y'a une derniere solution que j'avais envisagé : mauvaise gestion (moins tolérante) des shaders program sous linux par les pilotes ATI, sachant que, petit détail, nulpart dans mon code je ne "détruis" les shaders et les programs, je me contente de killer Opengl sans nétoyer les shader... alors j'avais pensé à un probleme de ce coté là, car meme en refaisant un shader différent, sous linux, le programme semble quand meme utiliser UNE PARTIE dans l'ancien programme... à la limite je me suis meme demandé comment c'était possible...
    Probleme, je ne sais pas comment netoyer proprement les shaders, avant de quitter le programme... je fini par me demander si ce n'est pas le compilateur GLSL des pilotes ATI qui sont completement à la ramasse... pourtant je ne dois pas etre le seul à faire du fragment shader sous linux, pourquoi ce bug personne n'en parle nulpart ?

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le moyen de s'en assurer serait de tester d'autres programmes utilisant les shaders. Il n'y a pas des équivalents des FX-Composer ou RenderMonkey pour Linux ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 73
    Par défaut
    Citation Envoyé par Laurent Gomila
    Le moyen de s'en assurer serait de tester d'autres programmes utilisant les shaders. Il n'y a pas des équivalents des FX-Composer ou RenderMonkey pour Linux ?
    Ca c'est une tres bonne question... cependant j'avais fais réussis à faire tourner la démo de quake4 sur mon ubuntu, et je pense que quake4 en use et abuse des fragments shader...

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    tu a shader designer qui tourne sous linux
    http://www.typhoonlabs.com/
    mais perso, je penche plus pour un probleme de driver (ATI + Linux + OpenGL, c'est pas vraiment le combo ultime )
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

Discussions similaires

  1. Samba sur Linux et Win 9x
    Par frenchsting dans le forum Réseau
    Réponses: 1
    Dernier message: 25/06/2007, 00h32
  2. Compile To Linux sous WIn
    Par fafou226 dans le forum Dev-C++
    Réponses: 7
    Dernier message: 23/02/2007, 14h00
  3. Partition linux sous Win XP
    Par orion57 dans le forum Administration système
    Réponses: 10
    Dernier message: 10/01/2007, 12h07
  4. fragment shader: passage en n&b
    Par nikhun dans le forum OpenGL
    Réponses: 15
    Dernier message: 25/09/2006, 08h40
  5. [Débutant] Créer des belles fenêtres à la façon Linux ou Win
    Par wikers dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 10/02/2005, 13h17

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