Bitmap et position fenêtre ??

9 sujets de 1 à 9 (sur un total de 9)

  • thellier

      #8581

      Voilà

      (Dans le cadre du futur Wazp3D48 qui utilise OpenGL en hardware)

      Warp3D ne reçoit comme paramétre que la bitmap et non pas la window dans lequel il trace.

      Donc comment retrouver la window “propriétaire de cette bitmap” de manière a aussi connaitre la position de la fenêtre du coté warp3D ????

      L’idéal serait de pouvoir explorer une liste de toutes les fenêtres ouvertes actuellement par AmigaOS puis de garder celle qui utilise ma bitmap….

      MERCIS

      Alain Thellier

      http://thellier.free.fr/Wazp3D.htm

      centaurz

        #131455

        @thellier

        A moins que tu ne sois sur un écran composité (OS4, MOS uniquement), ou que tu sois à la recherche d’une fenêtre SuperBitMap, tu ne pourras pas, car la BitMap est celle de l’écran, donc tout le monde a la même.

        Que cherches tu à faire exactement ?

        thellier

          #131456

          >Que cherches tu à faire exactement ?

          Dans WinUAE j’ai ma warp3d.library 48 qui désormais appelle l’OpenGL du PC (=trace avec OpenGL).

          Pour cela j’ouvre d’abord une “sous-fenetre” du coté windows dans la fenêtre de WinUAE . Ce rectangle me sert d’ “overlay” sur l’affichage de l’Amiga émulé.

          A l’interieur de ce rectangle je peut donc tracer avec OpenGL (en hardware :-) ) le problème c’est que je suis alors décorellé de l’AmigaOS… (Warp3d ne m’a transmis que la bitmap comme paramétre)

          Donc mon rectangle peut pas se deplacer avec la fenetre Amiga où tourne l’appli Warp3D ==> problème :-

          Sinon

          1) comment récupérer la bitmap de l’écran actif ?

          2) comment récuperer la liste des fenêtres ouvertes ? voire de la dernière ouverte ?

          Sinon à part ce problème ça marche très bien pour certains progs comme BlitzQuake ou je peut jouer en hardware dans WinUAE/Wazp3D avec le filtering & l’antialiasing d’activé

          GlExcess marche aussi mais à 90% seulement… reste des scènes buggués

          Alain

          crisot

            #131457

            Récupérer le bitmap d’un écran je suppose que t’as pas besoin d’aide, par contre de l’écran ACTIF… Là je peux pas te dire… Comment déterminer l’écran actif? Hmmm…

            Pour la liste des fenêtres, c’est fort simple.

            Pour un écran donné, tu récupères la première fenêtre:

            Screen->FirstWindow

            Puis pour cette fenêtre tu récupères la fenêtre suivante:

            Window->NextWindow

            Jusqu’à NULL… C’est chainé, c’est chiant, y’a pas de liste directement accessible.

            J’ose supposer que si c’est chainé dans l’ordre d’ouverture, la “dernière fenêtre” sera celle qui aura un pointer NextWindow NULL…

            Si tu as besoin des fenêtres de tous les écrans, chaque structure Screen à aussi des pointers vers les écrans devant/derrière.

            henes

              #131458

              Warp3D ne reçoit comme paramétre que la bitmap et non pas la window dans lequel il trace.

              Donc comment retrouver la window “propriétaire de cette bitmap” de manière a aussi connaitre la position de la fenêtre du coté warp3D ????

              Les programme warp3d fenêtrés tracent dans un bitmap offscreen avec les appels warp3d puis le recopient dans le rastport d’une fenêtre (pour profiter du cliping) via la graphics.

              crisot

                #131459

                Les programme warp3d fenêtrés tracent dans un bitmap offscreen avec les appels warp3d puis le recopient dans le rastport d’une fenêtre (pour profiter du cliping) via la graphics.

                Ha, ça doit être pour ça que quand on file Window-RastPort->BitMap à Warp3D, il trace en haut à gauche de l’écran public… et qu’on dit que les fenêtres utilisent le BitMap de l’écran…

                … chui con :-D

                centaurz

                  #131460

                  @thellier

                  Pour l’écran actif, il se trouve dans IntuitionBase (comme la fenêtre active) :

                  IntuitionBase->ActiveScreen (même avec ce qu’a dit Henes j’imagine que tu n’en a plus besoin)

                  Comme pour parcourir la liste des fenêtres, attention à bien verrouiller IntuitionBase avec LockIBase().


                  @crisot

                  C’est ça que tu appelle “difficilement accessible” ? Non mais j’vous jure… ;-)

                  for (win = scr->FirstWindow; win != NULL; win = win->NextWindow)

                  {

                  /* … */

                  }

                  crisot

                    #131461

                    J’ai pas dis que c’était difficilement accessible, mais chiant, mal branlé.

                    Et je persiste :-)

                    thellier

                      #131462

                      @henes

                      Les programme warp3d fenêtrés tracent dans un bitmap offscreen avec les appels warp3d puis le recopient dans le rastport d’une fenêtre (pour profiter du cliping) via la graphics

                      Oui tout à fait

                      Mais justement comme là c’est OpenGL qui trace par dessus sans se préoccuper de la bitmap (qu’elle soit à l’écran ou pas)

                      alors la seule info qui m’intéresse c’est ou placer mon rectangle = c’est donc bien la position de la fenêtre que je je voulais

                      A la limite la bitmap je m’en fous puisque l’OpenGL du coté PC ne l’utilise même pas (cette bitmap me donne juste la taille du rectangle) car je trace “par dessus” la fenêtre de WinUAE comme un “overlay”

                      Pour l’instant c’est qu’une première étape….

                      Par la suite je pense faire du rendu “off-screen” coté PC et le recopier dans la bitmap de l’Amiga. Comme ça AmigaOS pourra aussi afficher des trucs sur l’affichage 3D (textes,etc..)

                      Alain

                    9 sujets de 1 à 9 (sur un total de 9)

                    • Vous devez être connecté pour répondre à ce sujet.

                    Forums AmigaOS, MorphOS et AROS Développement Bitmap et position fenêtre ??

                    Amiga Impact