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

Windows Discussion :

Creer un SwapBuffers personnel


Sujet :

Windows

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut Creer un SwapBuffers personnel
    Bonjour,
    J’aimerai faire un SwapBuffers personnel. En effet, en utilisant une carte graphique Quadro, mon Back Buffer est modifié lorsqu’une autre fenètre survole ma fenètre OpenGL.
    J’aimerai ainsi utiliser les buffers auxilliaires, sans passer par l’intermédiaire de la fonction glCopyPixels puis du SwapBuffers windows qui est une solution beaucoup trop lente, et avoir la possibiliter de faire le swap directement entre ce buffer auxiliaire et le Front Buffer.
    Pensez-vous que cela est possible ? Et si oui, comment ?
    Merci d’avance.
    Cordialement.
    Benjamin

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 379
    Points : 20 447
    Points
    20 447
    Par défaut
    Totalement incompréhensible.
    D'abord primo il y a un forum OpenGL segundo faire des phrases plus clairs.
    J’aimerai ainsi utiliser les buffers auxilliaires, sans passer par l’intermédiaire de la fonction glCopyPixels puis du SwapBuffers windows qui est une solution beaucoup trop lente, et avoir la possibiliter de faire le swap directement entre ce buffer auxiliaire et le Front Buffer.
    D'après ce que je peux comprendre tu veux copier une zone mémoire en bon français vers une autre ? Avec les fonctions du C comme memcpy c'est peut-être possible il faut bien prendre garde à l'alignement des données

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Re Bonjour,
    Pas besoin d'être aussi désagréable. Si je n'ai pas mis mon sujet dans le forum OpenGL, c'est que la fonction SwapBuffers est une fonction windows, et non OpenGL.

    Je veux bien croire que je n'ai pas été suffisemment clair, alors pour peut être éclaircir :
    SwapBuffers de windows : swap entre back buffer et front buffer.
    Ce que je veux : swap entre un buffer auxiliaire et le front buffer.

    Merci pour votre aide.
    Cordialement,
    Benjamin

    PS. : remarque comment j'introduit mon message par un 'bonjour' et le termine par un mot de politesse, c'est quand même plus agréable.

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 379
    Points : 20 447
    Points
    20 447
    Par défaut
    Citation Envoyé par Grosbenji
    Pas besoin d'être aussi désagréable. Si je n'ai pas mis mon sujet dans le forum OpenGL, c'est que la fonction SwapBuffers est une fonction windows, et non OpenGL.
    ? Mais je ne suis pas désagréable et je suis parfaitement calme ,le forum OpenGL me semble plus approprié.
    J'avouerais avec franchise que je ne peux pas répondre avec précision à la question
    SwapBuffers de windows : swap entre back buffer et front buffer.
    Ce que je veux : swap entre un buffer auxiliaire et le front buffer.
    Ok mais comment crées-tu un buffre auxiliaire ?

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 379
    Points : 20 447
    Points
    20 447
    Par défaut
    Regarder autour de GetPixelFormat,DescribePixelFormat
    PIXELFORMATDESCRIPTOR pfd;
    HDC hdc;
    int iPixelFormat;

    // get the current pixel format index
    iPixelFormat = GetPixelFormat(hdc);

    // obtain a detailed description of that pixel format
    DescribePixelFormat(hdc, iPixelFormat,
    sizeof(PIXELFORMATDESCRIPTOR), &pfd);
    C'est l'exemple du MSDN ; une des fonctions donne un pointeur et taille sur un tampon en particulier

    http://msdn.microsoft.com/library/de...pnglo_74ab.asp

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonsoir,
    Alors d’abord, excuse moi d’avoir mal interprété tes dires. Il est vrai que parfois sur un forum, il n’est pas facile de comprendre le ton avec lequel ont été écrites les choses.
    Il est vrai que je remplis les buffers d’affichages par le biais d’Open GL, mais mon problème est directement lié à une mauvaise gestion (du moins je le pense), de windows.
    En fait, je travail sur un logiciel de CFAO (usinage de pièce pour l’industrie). Depuis dix ans, le même moteurs graphique est utilisé et il n’y a presque jamais eu de problème. Depuis quelques temps, avec les nouvelles cartes graphiques, et notamment les nVidia Quadro, un grave bug d’affichage est apparu.
    Après étude, nous nous sommes rendu compte que ce bug provenait du fait que l’on ne pouvait pas garantir le contenu du Back Buffer. Le Back Buffer correspond au buffer dans lequel on dessine, et le Front buffer, celui qui est afficher. Par le biais de la méthode windows SwapBuffers, on copie le contenu du BackBuffer dans le Front Buffer. Cette méthode n’est pas implémentée dans OpenGL pour conserver son exportabilité. Le problème, c’est que Windows utilise lui aussi ce Back Buffer, d’où l’apparition du bug d’affichage.
    Ainsi, nous avons pensé qu’en utilisant un buffer auxiliaire, une extension disponible sur certaine carte graphique (ce n’est pas quelque chose que tu créés, mais quelque chose que t’utilise), on pourrait contourner l’utilisation du back buffer. Encore faudrait-il pouvoir faire l’équivalent du SwapBuffer, mais cette fois entre le buffer auxiliaire et le front buffer.
    Jusqu’à présent, on utilise la méthode suivante :
    - on dessine dans le buffer auxiliaire
    - on copie le contenu du buffer auxiliaire dans le back buffer par l’intermédiaire de la méthode open GL glCopyPixels
    - on fait un SwapBuffer (swap entre back et front buffers)
    Le but final, est de se passer de la deuxième étape, en réalisant directement le swap entre le buffer auxiliaire et le front buffer.
    On espérant avoir réussi à être encore un peu plus clair…
    Cordialement,

    Benjamin

    PS. : je viens de remarquer ta nouvelle réponse, merci, je vais me replonger dans msdn, mais c'était une piste que j'avis étudié auparavant en vain. Je vais quand même m'y remettre. Bonne soirée.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonjour,
    En fait, visiblement ceci n'est pas possible :
    http://www.developpez.net/forums/showthread.php?t=30219
    Dommage...
    Cordialement,
    Benjamin

    [EDIT]
    En effet, il y a DrvSwapBuffers dans nvoglnt.dll, une dll nVidia. Et lorsque que je branche mon swap directement sur cette méthode, j'obtiens la même chose qu'avec SwapBuffers.
    Autrement dit, pas grand chose à voir avec Windows, SwapBuffers n'est qu'une redirection vers la méthode du driver. Désolé donc d'avoir posté au mauvais endroit...

  8. #8
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 379
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 379
    Points : 20 447
    Points
    20 447
    Par défaut
    Citation Envoyé par Grosbenji
    Bonsoir,
    Alors d’abord, excuse moi d’avoir mal interprété tes dires. Il est vrai que parfois sur un forum, il n’est pas facile de comprendre le ton avec lequel ont été écrites les choses.
    Bjr,
    il n'ya pas de mal
    Oui il me semblait que ce n'était pas possible c'est la carte graphique qui gére cela...d'ailleurs Windows propose bien peu de méthodes..
    A tout hasard cela peut peut-être se faire au niveau du rendu de la scéne entre BeginScene et EndScene ( ou GLBeginScene je crois )...
    Pour DrvSwapBuffers attention cela risque de ne pas être portable car dépendant de nVidia....

Discussions similaires

  1. Creer un utilisateur avec un repertoire personnel existant
    Par comode dans le forum Administration système
    Réponses: 2
    Dernier message: 05/07/2010, 19h05
  2. Réponses: 6
    Dernier message: 21/11/2006, 23h11
  3. creer un widget personnel
    Par ihm_swt dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 19/10/2006, 10h33
  4. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  5. Réponses: 2
    Dernier message: 17/03/2002, 19h00

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