Bitmap et position fenêtre ??
9 sujets de 1 à 9 (sur un total de 9)
-
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
>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
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.
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.
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
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().
C’est ça que tu appelle « difficilement accessible » ? Non mais j’vous jure…
for (win = scr->FirstWindow; win != NULL; win = win->NextWindow)
{
/* … */
}
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 ??