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 :

FBO: "violations d'acces lors de la lecture de l'emplacement 0x0..0"


Sujet :

OpenGL

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 20
    Points
    20
    Par défaut FBO: "violations d'acces lors de la lecture de l'emplacement 0x0..0"
    Bonjour tout le monde!

    Jvous explique mon problème:

    J'essaie d'utiliser les framebuffers object mais lorsque j'execute l'API 'glgenframebuffers' (ou tout autre API en relation avec le framebuffer) une exception me disant "violations d'acces lors de la lecture de l'emplacement 0x00000000" se produit. C'est à dire que l'address l'API n'est pas initialisé alors que je charge bien mes extensions.

    j'utilise un glew "customizé":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glGenFramebuffers = (pfn_glGenFramebuffers)get_proc_address("glGenFramebuffersEXT");
    Pouvez vous m'aider?

    PS: ma carte supporte GL_EXT_Framebuffer_object.

    Thanks!

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    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 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Bonjour,

    C'est dernier temps, j'ai travaillé sur un glew personnalisée aussi. ( Finalement, je ne le conseille pas :p )

    [CODE]
    pfn_glGenFramebuffers
    [CODE]
    Cette ligne là, dans glext.h, c'est normalement PFNGLGENFRAMEBUFFERSEXTPROC
    Mais je sais pas si ça change grand chose.

    C'est une fonction à vous ?
    Peut on voir le code ?

    La première chose à faire est de vérifié le retour de 'get_proc_address' pour savoir si celui ci renvoie NULL.

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Merci pour aide!
    En fait je suis obligé d'utiliser ce Glew customizé.
    Oui get_proc_address est une des fonctions du Glew customizé. Elle ne fait qu'utilisé wglGetProcAddress et vérifie si elle retourne NULL ou pas, écrivant un message d'erreur en fonction de cette valeur de retour.

    Ce qui est bizarre c'est que l'adresse bien est chargé lorsque j'utilse cette fonction dans la même classe où je crée mon contexte, mais ne l'ai pas dans les autres(@:0x00000000).

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Si glGenFramebuffers est a une valeur dans une partie de ton code et pas dans une autre t'as plusieurs possibilites :
    • tu reecris dans glGenFrameBuffers apres (verifie donc que tu fais une seule fois l'appel au code initialisant cette fonction)
    • tu reecris dans glGenFramebuffers a cause d'un segfault non detecte (tres rare mais ca arrive)
    • glGenFrambuffers est defini dans un header (il n'a pas le mot clef extern) et donc est cree pour chaque module qui inclue le header


    Verifie ces 3 points. N'oublie pas non plus que tu dois etre dans un contexte opengl valide pour faire les appels wglGetProcAddress

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    * Oui je n'appelle glGenFrambuffers qu'une seule fois
    * glGenFrambuffers est bien défini en extern

    Oui il est probable que ce soit du à une segmentation fault car lorsque mon application se termine une exception se produire indiquant "une violation d'acces lors de la lecture de l'emplacement 0x00000004".

    Que veux tu dire par contexte OpenGL valide?

    Merci!

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    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 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    On obtient un contecte OpenGL valide une fois que l'on a préparé la fenêtre pour pouvoir affiché ce que l'on veut.
    Soit pas GLUT / SDL / WinAPI ...

    Enfin je crois que c'est ça ... car certaines commandes OpenGL ne réagissent pas du tout lorsqu'il n'y a pas de fenêtre de prête.

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Oki Merci!

    C'est bizarre parce que je l'utilise après avoir crée mon contexte.
    La seule chose est que je n'utilise pas pas ces fonctions dans la même classe que celle est je crée mon contexte. Faudrait il la recharger?

    Tu sais comment savoir si mon contexte est valide (à part voir apparaitre la fenêtre?).

    Merci!

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 919
    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 919
    Points : 220 492
    Points
    220 492
    Billets dans le blog
    127
    Par défaut
    Je ne sais pas pour savoir si le contexte est valide.
    Mais il y a une fonction pour savoir si un FBO est valide.

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/05/2015, 14h58
  2. Réponses: 7
    Dernier message: 01/11/2014, 18h07
  3. Réponses: 6
    Dernier message: 14/08/2013, 12h57
  4. Réponses: 2
    Dernier message: 09/11/2010, 22h51
  5. Réponses: 5
    Dernier message: 01/12/2009, 02h06

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