Revenir à Développement

Bitmap et position fenêtre ??

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

9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #8581
    thellier
    Participant
    • Messages : 614

    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

    #131455
    centaurz
    Participant
    • Messages : 292

    @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 ?

    #131456
    thellier
    Participant
    • Messages : 614

    >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

    #131457
    crisot
    Participant
    • Messages : 1436

    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.

    #131458
    henes
    Participant
    • Messages : 2565

    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.

    #131459
    crisot
    Participant
    • Messages : 1436

    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

    #131460
    centaurz
    Participant
    • Messages : 292

    @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)

    {

    /* … */

    }

    #131461
    crisot
    Participant
    • Messages : 1436

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

    Et je persiste :-)

    #131462
    thellier
    Participant
    • Messages : 614

    @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 ??

Do NOT follow this link or you will be banned from the site!