PureBasic 5.46 LTS Beta

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

PureBasic 5.46 LTS Beta

Message par falsam »

Fred annonce la disponibilité de PureBasic 5.46 LTS Beta qui devrait résoudre quelques problèmes principalement sur Linux.

Annonce officielle : http://www.purebasic.fr/english/viewtop ... 14&t=69554

■ 3 Nov Beta 1
Résolution de quelques problèmes principalement sur Linux.



-
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Bonjour Falsam,

merci pour l'info.

J'ai aussi vu que tu n'avais pas retransmis sur le forum EN le bug pour Retina.

C'est pourtant, et ça se voit, vu la foule de bugs à gérer, ainsi que les consignes données, le seul moyen pour Fred de faire la vérification et d'être assuré que le bug vient bien du compilateur : ce seul moyen, et il l'a indiqué c'est sur le forum anglais.

Le code source que j'ai publié a plusieurs mois désormais et il n'a subi aucune modification. C'est un gage de fiabilité de ma part, et de transparence. Il ne faut pas craindre la complexité d'une programmation dès lors où, d'une part, il n'y a pas de redondance superflue dans le code source, et d'autre part, il n'y a pas de redondance superflue dans l'exécution du code source. Il n'y a qu'à observer les ressources CPU ou un benchmarks.

Enfin, j'appuie bien l'idée, que c'est pour Fred, pas pour moi. Car quand un compilateur a un bogue, il y a d'autres compilateurs open source qui n'ont pas ce bogue.

Fred n'est pas open source :
- il prend un sous-système open source compilable sur des compilateur open source,
- il l'inclut dans un concept (OpenGLGadget)
- il en vante l'existence dans la constitution de son produit.

Désolé de le dire mais, s'il bugue, il est en porte-à-faux. Donc, c'est ton rôle, si ça te coûte 5 minutes de temps pour copier sur le sujet EN adéquate (Fred en a encore fait le rappel dans le lien que tu donnes), que je te le demande, d'apporter une transmission. Pour Fred, ça ne sera sûrement pas une redondance superflue.

Merci pour ton écoute
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ar-S »

Si je puis me permettre.. pourquoi ne le fais tu pas ? Falsam est modérateur, pas postier.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PureBasic 5.46 LTS Beta

Message par falsam »

Je rejoins les propos d'Ar-s. Dans ton topic Retina tu as demandé a des utilisateurs de tester ton code, j'ai répondu que je voyais que des rectangles de couleurs. Mon rôle s'arrêtait là.

Si tu pense que le bug est du à PureBasic, alors c'est à toi de le signaler sur le forum anglophone sans oublier un petit code (pas de pavasse) fonctionnel prouvant les circonstances de ce bug. Sans ce code, Fred ne traitera pas le bug.

Allez ... Tchuss
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Mais j'ai fait tout ce qu'il faut, et dans les régles de l'Art les amis.

C'est au lien suivant depuis le printemps dernier :
http://www.purebasic.fr/english/viewtop ... =4&t=68436

Et ce lien est disponible dans le sujet "Retina".
Fred a écrit :Can anyone confirm this ? It seems to be OK here
Ce qui signifie : << Quelqu'un peut-il confirmer ça ? Ça semble OK ici. >> (Fred)
Si personne ne va confirmer, alors qu'on est en période de beta-test, il n'y aura pas de diversité d'OS, ni de diversité de matériel pour diagnostiquer le bug. Cela réduira les chances de détruire ce bug.

Je vous remercie pour votre écoute.
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.46 LTS Beta

Message par G-Rom »

@Ollivier, si tu fait référence à ce code : http://www.purebasic.fr/french/viewtopi ... =8&t=16662
Le code source que j'ai publié a plusieurs mois désormais et il n'a subi aucune modification. C'est un gage de fiabilité de ma part, et de transparence. Il ne faut pas craindre la complexité d'une programmation dès lors où, d'une part, il n'y a pas de redondance superflue dans le code source, et d'autre part, il n'y a pas de redondance superflue dans l'exécution du code source. Il n'y a qu'à observer les ressources CPU ou un benchmarks.
Pour la fiabilité du code on repassera, tu ne gère pas la création du contexte OpenGL, donc tu ne sais pas comment et quoi est disponible de l'API opengl, de plus , pour chaque caractère tu fait un glBindTexture(), donc totalement, superflu, tu satures n'importe quel carte graphique pour rien, une seule texture te suffit , celle de la fonte.comme cela, un seul bind pour tout les vertices, préfère aussi les tableau de pixels "brut" que les pointeurs de drawingbuffer() , il se peu sous opengl , que le drawingbuffer() soit encodé en BGRA ou RGBA, avec un tableau "brut" ( que tu peu copié d'une Image PB ) tu maitrise l'ordre des couleurs.
aussi, tu fait glClear_(#GL_DEPTH_BUFFER_BIT) dans CharBegin(), pourquoi effaces tu le buffer de profondeur ? tu fait de la 2D, pas besoin d'effacer ni d'avoir ce buffer... , mais plutot GL_COLOR_BUFFER_BIT.
A savoir aussi que GL_QUAD est obsolète et mal supporté sur les carte graphique récente. mieux faut 2 triangles.
Voilà, je ne vais pas énumérer toute les erreurs ou non sens que j'ai vu, je te suggère d'apprendre correctement OpenGL de manière plus moderne ici et de l'adapté à tes besoins : http://www.opengl-tutorial.org/fr/

Donc le problème viens de ton code, pas de purebasic.

@++
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Bonjour G-Rom,

Nous avons quasiment posté ensemble...

N'hésite pas à énumérer les différents détails techniques ci-dessus, à cette même adresse officielle : http://www.purebasic.fr/english/viewtop ... =4&t=68436.

Merci pour ton intervention.
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.46 LTS Beta

Message par G-Rom »

Re Bonjour, je te laisse le soin de le faire, je n'ai fait qu'exécuté ton code et le survolé, j'ai fait 3 crises cardiaque en lisant le source ^^
un truc qui pourrait t'intéressé : RayLib, dispo ici : https://github.com/raysan5/raylib/tree/master/src , il y a 2 fichiers très interessant , rlgl.c & rlgl.h , ils peuvent tourné en standalone, facilement convertible en PB, prend en compte l'opengl à papa (1.1) & l'opengl un peu plus moderne (3.3 & gles).

https://github.com/raysan5/raylib/blob/ ... src/rlgl.c
https://github.com/raysan5/raylib/blob/ ... src/rlgl.h
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Bonjour G-Rom,

ton lien est carrément intéressant, surtout que c'est en direct. Super !

Mais là, le problème est simple, et c'est Fred qui doit faire sa petite modif, à moins qu'il informe de la preuve qu'il a tout à refaire.

Pour imager, il n'est pas normal que le lave-linge ne démarre que si les volets électriques du séjour sont ouverts, alors que si je ferme les volets avec une lessive en cours, il ne se passe strictement aucun problème.

Les volets électriques, c'est le thème Windows.
Le lave-linge c'est une animation Opengl, et le démarrage du lave-linge c'est F5, ou l'exécution d'une application Opengl.

Je t'assure que tous les calculs de positions des sommets, calculs de normales, rastering, calculs de perspectives, etc... etc... , se font sans buguer : c'est juste le rendu, un peu comme si les volets électriques fermés empêchaient la poudre de lessive de tomber du bac à poudre vers le linge : tout semble fonctionner, mouiller le linge, chauffer le linge, tourner le linge, essorer le linge, le tout dans des timings inchangés, mais pas le lavage/désinfection du linge : le principal !

Là, on a un rectangle noir à la place d'opengl, et si on déplace la fenêtre, et que c'est une horloge à aiguilles, ben, l'horloge à aiguilles opengl s'affiche à l'heure dès qu'on déplace la fenêtre !!!
Il suffit qu'on soit plusieurs à faire observer nos résultats bugués et nos configurations pour que Fred cerne ce menu problème... Je vais faire un truc plus simple...
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Voilà, j'ai posté un code de 10 lignes ici : http://www.purebasic.fr/english/viewtop ... 13&t=69575. On verra bien, en espérant que ça augmente les chances de balayer ce bug...
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.46 LTS Beta

Message par G-Rom »

Je t'assure que tous les calculs de positions des sommets, calculs de normales, rastering, calculs de perspectives, etc... etc... , se font sans buguer
Oui, mais comme je te l'ai dit, GL_QUAD est mal supporté sur les nouvelles carte graphique, d'ou les bloc de couleur... utilise 2 triangle et tu règles ton problème.
sur Android aussi GL_QUAD n'est pas supporté , plus personne n'utilise des QUADS, les carte sont câblée pour des triangles. il n'y a donc aucun bug du coté de PB.
et pour les perf, un seul glBindTexture suffit, fait du batching , surtout avec des fontes ! le lien que je t'ai donner plus haut couvre ton besoin.
Regarde avec des triangles , ca fonctionne :

edit : ajout de l'apha

Code : Tout sélectionner

;******************************************************************************************************************************************
OpenWindow(0, 0, 0, 220, 220, "OpenGL Gadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenGLGadget(0, 10, 10, 200, 200)



Dim Image.i(4)

Image(0) = RGBA(64,128,255,128)
Image(1) = RGBA(0,0,0,0)
Image(2) = RGBA(0,0,0,0)
Image(3) = RGBA(64,128,255,255)

glUINT.i = 0

glGenTextures_(1, @glUINT)
glBindTexture_(#GL_TEXTURE_2D, glUINT)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_NEAREST)
glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_NEAREST)
glTexImage2D_(#GL_TEXTURE_2D, 0, 4, 2, 2, 0, #GL_RGBA, #GL_UNSIGNED_BYTE, @Image(0))


glEnable_(#GL_TEXTURE_2D)
glEnable_(#GL_DEPTH_TEST)
glEnable_(#GL_BLEND)
glDepthFunc_(#GL_LEQUAL)                      
glBlendFunc_(#GL_SRC_ALPHA, #GL_ONE_MINUS_SRC_ALPHA)

Repeat
        Event = WaitWindowEvent(16)
        SetGadgetAttribute(Gadget, #PB_OpenGL_SetContext, #True)
         glClear_ (#GL_COLOR_BUFFER_BIT)
        t.D = ElapsedMilliseconds() / 100.0
        glClearColor_(0.0, (1.0 + Cos(t) ) / 2.0, 0.0, 1.0)
        glClearDepth_(1.0)
        glBindTexture_(#GL_TEXTURE_2D, glUINT)        
    
        glLoadIdentity_()
        glScalef_(0.5,0.5,1)
        glRotatef_(45,0,0,1)
        
        glBegin_(#GL_TRIANGLES)
            glTexCoord2f_(0.0, 1.0)
            glVertex3f_( -1.0 , -1.0 , 0.0)     
            
            glTexCoord2f_(1.0, 1.0)
            glVertex3f_( 1.0  , -1.0 , 0.0)            
            
            glTexCoord2f_(1.0, 0.0)
            glVertex3f_( 1.0 ,  1.0, 0.0)            
            
            glTexCoord2f_(0.0, 1.0)
            glVertex3f_(-1.0 , -1.0 , 0.0)   
            
            glTexCoord2f_(0.0, 0.0)
            glVertex3f_(-1.0  , 1.0 , 0.0)   
            
            glTexCoord2f_(1.0, 0.0)
            glVertex3f_( 1.0 ,  1.0 , 0.0) 
        glEnd_()
        
        
        SetGadgetAttribute(Gadget, #PB_OpenGL_FlipBuffers, #True)
Until Event = #PB_Event_CloseWindow
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Bonjour G-Rom,

- Ton code sous W8 en mode contraste élevé : même problème. Mais vu les quelques résultats positifs du "vert brillant" sur le forum anglais, je crois que ça va rester comme ça, et que ça semble n'être qu'un cas isolé.

- Ton code sous W8 en mode normal : impeccable (juste corrigé Dim Image.L(3) car sous x64)

- Les quads qu'il faut jeter : Comme tu argumentes et que c'est très facilement modifiable, je vais devoir me faire une raison et mettre ça à jour.

Pour les glBindTexture, j'ai un doute. Je me suis accroché à étudier tous les mélanges possibles entre les couleurs de textures.

Je "bind" deux fois par caractère. 1 pour la forme, l'autre pour la couleur. Tu me conseilles de "batcher". J'imagine qu'il s'agit de découper la texture, grâce aux vecteurs u et v.
Si c'est ça batcher, au moins avec l'option #gl_Texture_2d, je vais avoir un problème de "voisinage", vu que mon programme "Retina" (option tri-fibrillation... Désolé d'ailleurs !) zoome et lisse tout ce qu'il peut, pour que le zoom reste supportable.

Une chose aussi, en terme de performance, est-ce que tu as un benchmark (même rudimentaire) parce que je ne suis pas certain que glBindTexture fasse systématiquement un transfert mémoire (RAM vers Vidéo) ! Il le fait une fois, ça c'est sûr, mais quand on lui refile la même adresse, il n'y a pas une map sous-jacente pour qu'il ne fasse qu'un transfert interne en RAM Vidéo?

En tout cas, merci de t'être penché sur mes difficultés.
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.46 LTS Beta

Message par G-Rom »

Ollivier a écrit :Je "bind" deux fois par caractère. 1 pour la forme, l'autre pour la couleur. Tu me conseilles de "batcher". J'imagine qu'il s'agit de découper la texture, grâce aux vecteurs u et v.
Si c'est ça batcher, au moins avec l'option #gl_Texture_2d, je vais avoir un problème de "voisinage", vu que mon programme "Retina" (option tri-fibrillation... Désolé d'ailleurs !) zoome et lisse tout ce qu'il peut, pour que le zoom reste supportable.

Une chose aussi, en terme de performance, est-ce que tu as un benchmark (même rudimentaire) parce que je ne suis pas certain que glBindTexture fasse systématiquement un transfert mémoire (RAM vers Vidéo) ! Il le fait une fois, ça c'est sûr, mais quand on lui refile la même adresse, il n'y a pas une map sous-jacente pour qu'il ne fasse qu'un transfert interne en RAM Vidéo?

En tout cas, merci de t'être penché sur mes difficultés.
oui, de faire le moins d'appel possible , les cartes graphiques moderne sont faite pour traité des milliers voir des millions de triangles, changer les états d'opengl pour chaque appel à un caractère à afficher est contre productif pour la carte graphique, même si toute les unités de texture tiennent dans la carte ( je ne fait pas de transfert RAM/GPU temps réel dans le code, je le fait qu'une fois) , pour ton soucis "de bord" avec une texture atlas , de mémoire il faut "clampé" la texture pour évité les effets de bords.
et l'idéal et de ne pas utilisé les commandes immédiates , mais les VBO , avec glDrawElements() par exemple.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

G-Rom a écrit :ne pas utilisé les commandes immédiates , mais les VBO , avec glDrawElements() par exemple.
glBindTexture fait effectivement des transferts RAM à chaque fois.

Je vais tenter glDrawArray (trouvé grâce à ta suggestion ci-dessus) pour voir si glBlend peut toujours accompagner (ça fait économiser pas mal de mémoire).

Merci beaucoup pour l'aiguillage.
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: PureBasic 5.46 LTS Beta

Message par Ollivier »

Fausse bonne idée DrawArray. Ça semble fait pour faire de la pluie, une armée en évolution, ou tout ensemble d'objets séparés mais se déplaçant à la même vitesse.

Moi, ça va être DrawRangeElements() qui va être parfait pour faire un traitement de texte.

Je ne trouve, pour l'instant, pas d'utilité pour le vbo en traitement de texte.

En attendant, je vais faire une version "batching" avec ton code (qui me rappelle un tuto de Nehe), mais en supprimant le glBindTexture au sein de la boucle. Tu as dû le mettre pour tester quelque chose...
Répondre