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

SDL Discussion :

problème SDL 2.0 et opengl


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut problème SDL 2.0 et opengl
    Bonjour à tous,

    je suis en train de coder un petit wrapper pour la SDL pour quelque chose de plus "orienté c++". Le problème étant que, autant les appels opengl fonctionnent, autant les appels SDL ne donnent rien du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    float vertices[] = {-0.5, -0.5,   0.0, 0.5,   0.5, -0.5};
    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
    glEnableVertexAttribArray(0);
     
    glDrawArrays(GL_TRIANGLES, 0, 3);
     
    glDisableVertexAttribArray(0);
    SDL_GL_SwapWindow(m_window);
    fonctionne (juste pour l'exemple bien sûr, dans la réalité c'est bien plus propre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SDL_Renderer* renderer = NULL;
    renderer =  SDL_CreateRenderer( m_window, 0, SDL_RENDERER_ACCELERATED);
    SDL_Rect r;
    r.x = 50;
    r.y = 50;
    r.w = 50;
    r.h = 50;
    SDL_SetRenderDrawColor( renderer, 0, 0, 255, 255 );
    SDL_RenderFillRect( renderer, &r );
    SDL_GL_SwapWindow(m_window);
    ne fonctionne pas.

    Je précise que (même si le problème ne vient pas de là) j'ai implémenté le moteur sous la forme d'un thread graphique auquel on peut ajouter autant de fenêtre qu'on le souhaite au fur et à mesure (plus de détails tout à l'heure, je dois y aller).

    Edit : en fait il semblerait que le flag SDL_WINDOW_OPENGL ne permet pas d'utiliser l'affichage SDL, l'inverse étant aussi vrai. Savez-vous d'où cela provient ? C'est concevable et ce n'est pas très embêtant mais ça reste quand même bizarre.

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


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

    Il n'y a rien d'indiqué sur la documentation autour du flag SDL_WINDOW_OPENGL.
    Par contre, le problème est plus sur les threads : http://wiki.libsdl.org/CategoryThread
    NOTE: You should not expect to be able to create a window, render, or receive events on any thread other than the main one. For platform-specific exceptions or complicated options ask on the mailing list or forum.
    Il est dit simplement, qu'il n'est pas prévu que le rendu fonctionne lorsqu'il est fait dans un autre thread que le principal.
    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 éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut
    En effet, j'ai galéré à faire marcher le truc, parce qu'il faut que tous les appels (opengl ou SDL) se fassent dans le même thread (par contre ça n'a pas besoin d'être le thread principal) (par contre d'après ton message j'ai peur que ça ne fonctionne plus sous linux, enfin je testerai ça à l'occasion).
    Du coup j'ai un thread graphique qui tourne, et on peut lui rajouter des fenêtres à dessiner, des viewports, etc ... mais c'est dommage que chaque fenêtre ne puisse faire que du rendu opengl ou du rendu SDL, pas les deux simultanément (avec par exemple une scène 3D sur laquelle on rajoute une surcouche de SDL pour l'interface graphique).

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut
    Bon en fait, tu avais complètement raison LittleWhite, car j'ai testé le fait de tout mettre dans le thread principal, et là plus de problèmes de redimensionnement, de fullscreen (plus de blocage lors de l'appel des fonctions SDL correspondantes).
    Le seul point qui subsiste est le fait que pour une raison inconnue lorsqu'on fait un update (SDL_GL_SwapWindow) sur une fenêtre opengl et qu'on rajoute du dessin SDL en update avec SDL_RenderPresent le render SDL n'est jamais effectué, et la couleur de fond est toujours celle utilisée par opengl.
    Je passe quand même le sujet en résolu.

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

Discussions similaires

  1. Problème avec le "light mapping" OpenGL ?
    Par zambizi dans le forum OpenGL
    Réponses: 6
    Dernier message: 02/03/2008, 11h09
  2. Problème lien librairie libjpeg.lib OpengL
    Par kev42100 dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 14/02/2008, 10h44
  3. problème compilation projet eclipse C++ opengl
    Par youp_db dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/04/2007, 10h34
  4. problème sdl blitter une image.!
    Par mitherkiller dans le forum SDL
    Réponses: 6
    Dernier message: 15/04/2007, 01h10
  5. problème d'affichage des scènes OpenGL
    Par franc82 dans le forum OpenGL
    Réponses: 4
    Dernier message: 02/01/2007, 10h11

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