Comment fusionner deux ecrans Intuition

15 sujets de 1 à 15 (sur un total de 17)

  • 1
  • 2
  • Sharynn

      #180210

      Hello tous le monde codeur ou non !!,

      Je voudrais savoir si on peux fusionner deux écrans intuition. Je m’expliquer..

      J’ai deux écrans ouvert de 8 couleurs (3 bitplans) et je désirerai récupérer les BitPlans de chacun pour ouvrir un écran en 64 couleurs (6 Bitplans)..

      Avec les trois premiers bitplans venant d’un écran et les trois suivants de l’autre..

      Un dualplayfield en quelques sorte.. C’est pour mon AMOS4..

      Je serais intéressé même par une bribe d’aide pour commencer car je n’arrive pas a récupérer les Bitplans de l’un pour les mettre vers l’autre..

      RastPor, Viewport.. je ne sais pas par ou commencer..

      Merci par avance..

      — AMOS un jour … AmOS4 toujours —

       

      Amos un jour, Amos Toujours
      -----------------------------------
      AmOS4 - Library Amos sous C (Os3-Os4)

      Anonyme

        #180221

        j’en sais rien mais je suis à fond avec toi !

        Sharynn

          #180232

          LOL !!! Merci …

           

          Amos un jour, Amos Toujours
          -----------------------------------
          AmOS4 - Library Amos sous C (Os3-Os4)

          WillyCat

            #180236

            Bonsoir,

            De mémoire, je pense que tu peux le faire en renseignant le pointeur custombitmap de la structure newscreen lors de l’ouverture de ton troisième écran vers un bitmap pointant sur les plans de tes deux autres écrans.

            Willy.

            Gilloo

              #180246

              Si l’on se contente de l’OCS/ECS/AGA, il suffit de regarder les structures RastPort (include/graphics/rastport.h) et BitMap (include/graphics/gfx.h)

              RastPort -> BitMap l’accès aux 8 plans possibles se fait par le tableau Planes[].

              Maintenant il faut traduire tout ça en assembleur…

               

               

              Sharynn

                #180252

                Non pas en assembleur, en C…

                Hélas je suis un débutant en C et je ne sais pas comment copier les adresse de pointeur entre mon nouvel écran et mes deux anciens pour faire ma bidouille

                copier Old1->Planes[0] vers new->Planes[0]   etc… ?

                Utiliser AllocBitmap ou InitBitmap ?

                Faire modif.  juste après Alloc/initBitmap() sur le pointeur reçu et avant d’ouvrir l’écran ?

                On avance petit a petit…

                Pour information de codage, il faut que je puisse faire cela sous OS3.x mais l’AmOS4 sera prévu pour OS4..

                 

                Amos un jour, Amos Toujours
                -----------------------------------
                AmOS4 - Library Amos sous C (Os3-Os4)

                thellier

                  #180263

                  non non tu alloue pas ta bitmap
                  tu fais juste une « fausse » bitmap
                  struct bitmap mybm;
                  dont tu remplis les champs comme ceux de l’existant Screen1->bitmap
                  sauf les champs planes que tu pioche dans les bitmaps des ecrans & et 2
                  genre
                  bm.Planes[0]=Screen1->bitmap.Planes[0];bm.Planes[1]=Screen2->bitmap.Planes[0];
                  etc..
                  bm.Planes[6]=NULL;
                  bm.Planes[7]=NULL;

                  puis dans struct newscreen mynewscreen;

                  mynewscreen.custombitmap=&mybm;

                  OpenNewScreen()

                  Enfin un truc dans le genre, pas le temps d ecrire mieux le truc …

                  Alain

                  Sharynn

                    #180491

                    Non je n’arrive à rien …

                    Je fini toujours par un GURU !!!

                    Merci Alain!!! l’idée est bonne mais comment écrire tout cela ?

                     

                     

                     

                    Amos un jour, Amos Toujours
                    -----------------------------------
                    AmOS4 - Library Amos sous C (Os3-Os4)

                    thellier

                      #180494

                      Bonsoir
                      faut bien voir que moi non plus j ai jamais ecris un truc comme ca
                      mais bon je me rappelle du temps ou je faisais de l ASM et du hard Amiga
                      et je vois pas pourquoi on pourrais pas le faire
                      Le moeux c est de poster ton listing : Je verrai peut etre ton erreur

                      Alain

                      Sharynn

                        #180502

                        Voici le code rapide de test…

                        ……….

                        DUAL_BITMAP=(struct BitMap *) AllocMem(sizeof(struct BitMap), MEMF_CHIP);
                        REC_DUAL.MinX = 0;
                        REC_DUAL.MaxX = 640;
                        REC_DUAL.MinY = 0;
                        REC_DUAL.MaxY = 480;

                        DUAL_BITMAP->BytesPerRow=Physic[1]->BytesPerRow;
                        DUAL_BITMAP->Rows=Physic[1]->Rows;
                        DUAL_BITMAP->Depth=Physic[1]->Depth;
                        // DUAL_BITMAP->Flags=Physic[1]->Flags;
                        // DUAL_BITMAP->pad=Physic[1]->pad;

                        DUAL_BITMAP->Planes[0]=Physic[1]->Planes[0];
                        DUAL_BITMAP->Planes[1]=NULL;//Physic[1]->Planes[1];
                        DUAL_BITMAP->Planes[2]=NULL;//Physic[1]->Planes[2];
                        DUAL_BITMAP->Planes[3]=NULL;//Physic[0]->Planes[0];
                        DUAL_BITMAP->Planes[4]=NULL;//Physic[0]->Planes[1];
                        DUAL_BITMAP->Planes[5]=NULL;

                        modeid = BESTMODEID(640,480,640,480,NbBitplane);

                        // ======================================
                        // Ouverture de l’écran selin les paramètre prévus
                        // ======================================
                        DUAL_SCR = OpenScreenTags( NULL,
                        SA_Left,0,
                        SA_Top, 0,
                        SA_Title,(ULONG) »Screen »,
                        SA_Width,640, //XScr,
                        SA_Height,480, //YScr,
                        SA_Depth,6, //NbBitplane,
                        SA_DetailPen,1,
                        SA_BlockPen,0,
                        SA_DClip,&REC_DUAL,
                        SA_Font,&ta,
                        SA_Behind,FALSE,
                        SA_Quiet,FALSE, //TRUE,
                        SA_BitMap,DUAL_BITMAP,
                        SA_Type,CUSTOMBITMAP,
                        SA_DisplayID,modeid,
                        TAG_DONE);
                        ……………
                        Je suis preneur de toutes idées…

                        Amos un jour, Amos Toujours
                        -----------------------------------
                        AmOS4 - Library Amos sous C (Os3-Os4)

                        AmiDARK

                          #180636

                          Mets aussi un MEMF_CLEAR car si tu modifie pas toutes les variables de ton custom bitmap .. ça risque de chier les valeurs ..
                          DUAL_BITMAP=(struct BitMap *) AllocMem(sizeof(struct BitMap), MEMF_CHIP|MEMF_CLEAR);

                          Le reste semble bon … enfin à ce que je connaisse de l’intuition (ce qui est très limité)

                          Enfin, tout dépend aussi si le bitmap généré pour tes écrans est *standard* ou pas … selon les modes graphiques, il ne s’agit pas d’un *bitmap* mais d’un *superbitmap* et là niveau structure … j’ai pas d’informations …

                          @+

                          henes

                            #180652

                            Pour info, les systèmes RTG ne supportent pas ce genre de hack.

                            Surtout en mettant un bitmap planar…

                             

                            AmiDARK

                              #180661

                              Tiens Hénès d’ailleurs, tu connais le contenu de la structure bitmap d’un écran RTG ?
                              Je n’arrive pas à trouver d’informations sur le sujet.

                              henes

                                #180664

                                Je ne suis pas sur de comprendre la question.
                                Les champs de struct BitMap contiennent évidemment des valeurs valides, pour la compatiblité avec les logiciels existant.
                                Sauf Planes[8] qui n’a pas de sens avec un affichage >8bit et non planar. Et la mémoire video est de toute façon constamment réorganisée donc l’adresse change…

                                Ce thread n’a aucun sens…
                                C’est comme demander comment jouer du 5.1 sur un système mono.

                                Ou alors je n’ai strictement rien compris et cet « AMOS4 » est uniquement prévu pour l’AGA.

                                AmiDARK

                                  #180666

                                  Hénès, quand tu crées un écran Intuition, la librairie va allocationner en mémoire tout ce qui est nécessaire pour que cet écran soit utilisable. non ?
                                  A ce moment là, les zones mémoires (bitmap en planar ou chunky) seront définis et ne changeront pas jusqu’à ce que tu fermes l’écran en question. non ?
                                  A moins que en RTG ce soit quelque chose qui change constamment et pas en AGA ?
                                  Pourrais-tu nous éclairer sur le sujet ?

                                  N’oublie pas que quelque chose qui peut te paraître évident à toi qui connait beaucoup (niveau fonctionnement interne) l’AmigaOS, peut ne pas être évident pour d’autres 😉

                                  Merci.
                                  @+

                                15 sujets de 1 à 15 (sur un total de 17)

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

                                Forums AmigaOS, MorphOS et AROS Développement Comment fusionner deux ecrans Intuition

                                Amiga Impact