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 :

rendre texture SDL_TEXTUREACCESS_STREAMING


Sujet :

SDL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 50
    Points
    50
    Par défaut rendre texture SDL_TEXTUREACCESS_STREAMING
    Bonjour,

    j'utilise la librairie openCV pour convertir chaque frame en SDL_texture et l'afficher dans une fenêtre via un Renderer.

    j'aimerai maintenant pouvoir gérer la transparence avec la vidéo comme avec une texture.

    sans entrer dans les détail, mon problème est que pour gérer la transparence d'une texture on ne peux le faire que a partir d'une surface via SDL_SetColorKey et ensuite créer une texture a partir de cette surface.
    lors de la création de la texture celle-ci est automatiquement en accès : SDL_TEXTUREACCESS_STATIC
    mais pour convertir une frame de la vidéo en texture l’accès de la texture doit être SDL_TEXTUREACCESS_STREAMING sinon la copie est interdite.

    pour l'instant a l'ouverture de la vidéo:
    je crée une surface en fonction de la vidéo,
    j'utilise SDL_SetColorKey pour fixer la couleur de transparence

    a chaque frame a afficher:
    je détruit la texture si elle existe déjà
    je convertis la frame de la vidéo et la charge dans la surface,
    je crée la texture avec SDL_CreateTextureFromSurface

    cela fonctionne bien mais si je pouvais modifié l’accès de la structure en SDL_TEXTUREACCESS_STREAMING
    je pourrais directement chargé la frame dans la texture sans devoir la détruire et la recréer a chaque frame.

    avez vous une autre idée ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    SDL_SetColorKey définit une couleur pour etre transparente.
    Si tu veux faire de la transparence, il faut jouer avec l'alpha et le blend mode.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 50
    Points
    50
    Par défaut
    Merci pour la réponse mais
    c'est bien une couleur que je veux rendre transparente et pas la totalité de la vidéo,
    c'est pour superposé une petite vidéo (animation) au dessus d'une vidéo de fond.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Peux-tu ajouter un shader ? Tu pourrais alors gérer la transparence directement depuis le shader sans avoir à torturer une sdl texture à chaque frame.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 68
    Points : 50
    Points
    50
    Par défaut
    merci pour l'aide,
    je ne connais pas les shader, je vais etudier cela.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Tu dois aussi pouvoir créer une texture en streaming, la lock pour y recopier les données d'openCV, puis la unlock.
    https://gamedev.stackexchange.com/a/102496
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Rendre une texture alpha de couleur unie
    Par Djakisback dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/03/2008, 15h41
  2. Chargement d'une texture a partir de la mémoire
    Par logramme dans le forum DirectX
    Réponses: 6
    Dernier message: 27/01/2003, 14h57
  3. Mosaïque texturée
    Par Pode dans le forum OpenGL
    Réponses: 5
    Dernier message: 19/09/2002, 09h50
  4. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31

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