Page 1 sur 1

[Résolu] Problème avec StartDrawing()

Publié : ven. 02/juil./2010 23:11
par gildev
Je vais passer pour une quiche mais...

Code : Tout sélectionner

StartDrawing(ScreenOutput())
Ne fonctionne plus à présent? :(

Voici l'un des programmes que j'avais fait pour le 1er PurePunch et à l'époque ça marchait:

Code : Tout sélectionner

InitSprite():InitKeyboard():OpenScreen(640,480,32,"PB"):x=640:t$="PUREBASIC IS THE BEST PROGRAMING LANGUAGE IN THE WORLD!!!":LoadFont(1,"Arial",24):c.f=0.0174532925:xo=320:yo=260:Repeat:FlipBuffers():ClearScreen(RGB(0,0,0)):ExamineKeyboard()
StartDrawing(ScreenOutput()):For i=0 To 24:LineXY(0,i,639,i,RGB(0,120-i*5,0)):Next i:DrawingMode(#PB_2DDrawing_Transparent):DrawingFont(FontID(1)):DrawText(x,-6,t$,RGB(255,255,191)):DrawText(x-1,-5,t$,RGB(255,255,191))
DrawText(x+1,-5,t$,RGB(63,63,31)):DrawText(x,-4,t$,RGB(63,63,31)):DrawText(x,-5,t$,RGB(191,191,127)):a=0-TextWidth(t$):For i=0 To 63:LineXY(0,yo-i,639,yo-i,RGB(0,64-i,0)):LineXY(0,yo+i,639,yo+i,RGB(0,64-i,0)):Next i:For j=0 To 40
If j=40:FrontColor(RGB(255,63,0)):Else:FrontColor(RGB(j*5+10,0,0)):EndIf:Restore DS:x1=-30:y1=-100:For i=1 To 16:Read x2:Read y2:LineXY(xo+x1*Cos((b+j)*c.f),yo+y1*Sin((b+j)*c.f),xo+x2*Cos((b+j)*c.f),yo+y2*Sin((b+j)*c.f)):x1=x2:y1=y2:Next i
Next j:b=b+1:If b>=360:b=0:EndIf:StopDrawing():If x>a:x=x-2:Else:x=640:EndIf:For i=0 To 25:GrabSprite(i+1,0,i,640,1,#PB_Sprite_Memory):Next i:For i=0 To 25:DisplayTranslucentSprite(i+1,0,48-i,i*5):Next i:
Until KeyboardPushed(#PB_Key_Escape):End:DataSection:DS:Data.l 10,-140,150,-140,30,-20,90,-20,50,20,-10,20,-90,100,150,100,110,140,-150,140,-30,20,-90,20,-50,-20,10,-20,90,-100,-30,-100:EndDataSection
Par quoi faut-il le remplacer maintenant? :?:

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 0:59
par gildev
En fouillant bien sur le forum j'ai trouvé qu'il fallait utiliser le subsystem directx 7. En effet ça a corrigé le problème, mais par contre ça rame à fond. Quelqu'un a mieux? Au passage je suis en Windows Seven en directx 9. :(

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 8:58
par TazNormand
Salut

Ton code fonctionne très bien chez moi sous PB 4.50 finale, Vista Pro SP2 et subsystem par défaut DX9 (je n'ai rien indiqué dans option compilateur).

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 9:26
par gildev
J'ai désinstallé la version 4.41 pour mettre la 4.50 et c'est toujours pareil. Je n'ai pas de bol. :(
Je sens que je vais regretter mon Windows XP Pro...

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 9:59
par TazNormand
tu peux donner un récap de ton système ?

moi c'est :
  • Core2Duo E8500 3.16Ghz@3.28Ghz
    Sapphire HD4850 512Mo
    Driver ATI 10.6
    Vista Pro SP2
    DirectX 11
    PureBasic 4.50 Finale

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 9:59
par djes
Fonctionne aussi sur mon vieux XP SP3, NVidia 6600

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 10:50
par comtois
Ton code plante sous seven home 64 bits.
Mais si je le corrige un peu , ça tourne parfaitement sans directx7.

Pas de problème d'affichage avec ScreenOutPut, le problème vient du fait que désormais il faut indiquer le type des données lues par Read, si tu ne précises rien c'est des integer, mais tu as défini tes datas avec des long, donc sur un système 32bits c'est transparent, mais sur mon système 64 bits ; Read lit des integer donc 8 octets à la place des long soit 4 octets.

Donc pense à préciser le type de données lues dans ton Read, et utilise le plus souvent possible les integer, les systèmes 64 bits t'en seront reconnaissant :)

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 12:24
par gildev
Ma config:

Core2Duo E4500 2.20Ghz@2.20Ghz
NVidia GeForce 9800GT
Driver NVidia 8.17.11.9621
Windows Seven edition familiale premium (en 32 bits)
DirectX 11
PureBasic 4.50 Finale

Je pense que ça vient de Windows Seven.

Curieusement ça ne rame plus et ça fonctionne, mais je dois toujours préciser DirectX 7 sinon l'erreur revient. C'est balo car ça veut dire que pour le PurePunch 2010 ceux qui ont un Seven devront penser à modifier les options de compilation sinon plantage.

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 13:54
par djes
J'espère que quelqu'un pourra confirmer... Sinon, on n'est pas obligé de faire une démo graphique, ou purement plein écran ou que sais-je.

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 14:07
par SPH
Fonctionne tres bien sur XP SP3 et sur Vista 32 !!!

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 14:46
par Ar-S
En 4.50 x86 sous 7 x64 ça tourne
En 4.50 x64 sous 7 x64 sauf qu'a la place du logo PB rouge j'ai de sales traits aléatoires.
Je pense être en, DX9

Re: Problème avec StartDrawing()

Publié : sam. 03/juil./2010 17:57
par gildev
Bah je préciserai en note de compiler en DirectX 7. :wink:
Affaire classée. Merci à vous.

Re: [Résolu] Problème avec StartDrawing()

Publié : sam. 03/juil./2010 20:27
par Le Soldat Inconnu
tourne nickel chez moi aussi en DX9