:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Forums Hébergés :: > OldSchool Library > Aide au développement

Aide au développement Aide sur l'utilisation d'OSLib

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 03/12/2007, 11h58   #1
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut OSLib 2.10 - oslSetDrawBuffer

Salut,

J'ai installé la nouvelle version d'oslib (2.10) et j'ai un problème qui est survenu:
Le code posant problème dessine sur une image que je crée et que je set en tant que drawbuffer. Ca fonctionnait très bien et maintenant ca ressemble à ca: (les 3 textes)

Certains pixels sont passés à la trappe on dirait est ce que la nouvelle version d'oslib nécessite que je fasse autre chose pour que ca refonctionne?

voilà le code:
Code PHP:
//creation de l'image en VRAM
OSL_IMAGE img=oslCreateImage(m_widthm_heightOSL_IN_VRAM OSL_UNSWIZZLEDm_font->getImage()->pixelFormat); 
if(
img==NULL)
    
oslFatalError("BmpText::compile : impossible de creer l'image");
        
oslStartDrawing();
oslClearImage(imgRGBA(0000));
oslSetDrawBuffer(img);        
        
//Every pixel written will take the value 255 (opaque)
oslSetAlphaWrite(OSL_FXAW_SET2550);
//But do not draw transparent pixels (only those greater than 0).
oslSetAlphaTest(OSL_FXAT_GREATER0);
        
draw(00);
        
oslDisableAlphaTest();
        
oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
oslEndDrawing();
        
m_img=oslConvertImageTo(imgOSL_IN_RAM OSL_SWIZZLEDm_font->getImage()->pixelFormat); 
- Dans oslCreateImage j'ai rajouté OSL_UNSWIZZLED pensant que ca venait de là mais ca n'a rien changé, avant ça n'y était pas.
- "draw(0, 0);" est une fonction longue qui dessine des lettres venant de l'image dans "m_font" d'où l'utilisation de son format de pixel.
- c'est m_img qui est dessiné à l'écran ensuite.

Brunni si tu passes par là, merci de m'aider
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation

Publicité

Vieux 03/12/2007, 16h03   #2
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

bon après avoir bien galéré, il semble que cela venait de la ligne:
Code PHP:
m_img=oslConvertImageTo(imgOSL_IN_RAM OSL_SWIZZLEDm_font->getImage()->pixelFormat); 
car en la remplaçant par ceci:
Code PHP:
if(!oslMoveImageTo(imgOSL_IN_RAM))
    
oslFatalError("BmpText::compile : cannot move image to RAM"); 
ben ca fonctionne

par contre j'avais essayé d'ajouter oslSwizzleImage(img); et ca donnait ca:


du coup mon code qui refonctionne ressemble à ca:
Code PHP:
OSL_IMAGE img=oslCreateImage(m_widthm_heightOSL_IN_VRAM|OSL_SWIZZLEDm_font->getImage()->pixelFormat);
if(
img==NULL)
    
oslFatalError("BmpText::compile : impossible de creer l'image");
        
oslStartDrawing();
        
oslClearImage(imgRGBA(0000));
oslSetDrawBuffer(img);        
        
//Every pixel written will take the value 255 (opaque)
oslSetAlphaWrite(OSL_FXAW_SET2550);
//But do not draw transparent pixels (only those greater than 0).
oslSetAlphaTest(OSL_FXAT_GREATER0);
        
//oslSetAlpha(OSL_FX_NONE, 0);
draw(00);
//oslSetAlpha(OSL_FX_DEFAULT, 0);
        
oslDisableAlphaTest();
        
oslSetDrawBuffer(OSL_DEFAULT_BUFFER);
oslEndDrawing();

if(!
oslMoveImageTo(imgOSL_IN_RAM))
    
oslFatalError("BmpText::compile : cannot move image to RAM");

m_img=img
voilà il y a peut-être un bug dans la fonction oslConvertImageTo ou alors y a qqch que j'ai pas pigé et je suis tout ouïe pour l'explication

PS: désolé pour le double post mais je trouve que ca fait plus lisible.
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Vieux 27/12/2007, 21h31   #3
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 226
Par défaut

En général quand tu as ce genre de problèmes (manque de pixels sur le bas) c'est que la sortie du cache d'une image n'a pas été faite correctement (oslUncacheImage).
Par contre le coup du oslSwizzleImage qui trashe l'image je trouve ça bizarre et j'arrive pas à reproduire

Dernière modification par Brunni ; 27/12/2007 à 21h34.
Brunni est déconnecté   Réponse avec citation
Vieux 04/01/2008, 11h14   #4
daaa57150
Membre confirmé
 
Date d'inscription: 16/05/2007
Messages: 411
Voir l'identifiant PSN
Par défaut

Citation:
Envoyé par Brunni Voir le message
En général quand tu as ce genre de problèmes (manque de pixels sur le bas) c'est que la sortie du cache d'une image n'a pas été faite correctement (oslUncacheImage).
Je pensais qu'il fallait utiliser ça seulement quand on accède aux pixels de l'image, je dois dire que je ne sais pas quand l'utiliser en fait . Mais c'est réglé donc je le saurais pour la prochaine fois!

Citation:
Envoyé par Brunni Voir le message
Par contre le coup du oslSwizzleImage qui trashe l'image je trouve ça bizarre et j'arrive pas à reproduire
Ca doit être parce que j'ai fait des trucs bizarres
J'ai fabriqué une image vide, dessiné dessus en utilisant oslSetAlphaWrite(OSL_FXAW_SET, 255, 0) et oslSetAlphaTest(OSL_FXAT_GREATER, 0), remis le buffer normal en place et modifié l'image avec oslConvertImageTo et c'est ca que je dessine à l'écran mais ca marche maintenant

Un petit truc un peu hors sujet pour toi Brunni, peut être juste à cogiter quoi...
J'ai eu un petit souci, effet de bord disons avec cette histoire de changement de buffer. Et cela venait du fait que j'avais 2 threads, dont l'un s'occupe de dessiner à l'ecran pendant que le principal charge les ressources, et entre autre fait ce que j'ai décrit là haut. Et là évidamment, problème! les 2 dessinent, et l'un change le buffer vite fait du coup j'avais des glitches. je l'ai résolu avec pspSdkDisableInterrupts et pspSdkEnableInterrupts (j'ai bien essayé avec les sémaphores mais j'ai dû me planter quelquepart).
Bref, pspSdkDisableInterrupts et pspSdkEnableInterrupts ont peut être leur place dans oslStartDrawing et oslEndDrawing, même si y a pas grand monde à qui ca profitera... Ou peut être juste une explication dans la doc fera l'affaire..
__________________
Essayez mon dernier jeu sur iPhone:

daaa57150 est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h18.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince