website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » MiniGL


Posté : 02-11-2012 10:10 icone du post

Hello

>MiniGL fait totalement le contraire, il prend les triangles un par un
Ca rejoint ce que j'avais écris ici:
http://www.amiga-ng.org/viewtopic.php?topic=1369&forum=14
Comme quoi il faudrait un StateTracker dans MiniGL comme ce qui existe dans Wazp3D pour bufferizer les triangles...

J'en viens même à me demander si un "Wazp3D avec rendu Warp3D" n'aurait pas du sens.... (cad tout le bon code de Wazp3D et juste utiliser qques fonctions de Warp3D comme W3D_DrawArrray pour tracer....)

Par ailleurs avant de tracer MiniGL passe son temps à remettre (aux mêmes valeurs) les states et blendmode .@crisot : Ajouter qques tests dans le code MiniGL éviteraient 10 appels à Warp3D par opération de traçage (voir plus loin)

Ci dessous un exemple obtenu grace au debugger de Wazp3D sur supertuxkart:
trace 2 rectangle soit 2*2=4 triangles en 22 !!! appels à Warp3D
Je precise pour les non-coders que un seul appel à Warp3D suffisait le W3D_DrawArray() de 4 triangles

Alain Thellier


/* ici mets des states */

[69424][2346]W3D_SetState
[ ] state=W3D_CULLFACE
[69425][1387]W3D_SetFrontFace
direction=W3D_CCW
[69426][34428]W3D_SetTextureBlend
W3D_BLEND_STAGE,0,
W3D_COLOR_COMBINE,W3D_COMBINE_DISABLED
W3D_ALPHA_COMBINE,W3D_COMBINE_DISABLED
[69427][34429]W3D_SetTextureBlend
[69428][34430]W3D_SetTextureBlend
W3D_BLEND_STAGE,1,
W3D_COLOR_COMBINE,W3D_COMBINE_DISABLED
W3D_ALPHA_COMBINE,W3D_COMBINE_DISABLED
[69429][34431]W3D_SetTextureBlend
[69430][34432]W3D_SetTextureBlend
[69431][10327]W3D_InterleavedArray
[69432][2347]W3D_SetState
[X] state=W3D_CULLFACE
[69433][1388]W3D_SetFrontFace
direction=W3D_CCW

/* ici trace juste 2 triangles */

[69434][14739]W3D_DrawArray
SetTexStates
WC->state:Changed1 UseTex0 ST0 ZMode9 TexEnvMode0 BlendMode33 UseGouraud1 UseFog0 (tex 0)
Adjusting WC->state ....
WC->state.BlendMode=33
WC->DstFunc=8
WC->SrcFunc=7
WC->state.BlendMode=33
WC->state:Changed1 UseTex0 ST0 ZMode9 TexEnvMode0 BlendMode33 UseGouraud1 UseFog0
primitive=W3D_PRIMITIVE_TRISTRIP
base=0
count=4
DrawPrimitive

/* ici remets les mêmes states */

[69435][2348]W3D_SetState
[ ] state=W3D_CULLFACE
[69436][1389]W3D_SetFrontFace
direction=W3D_CCW
[69437][34433]W3D_SetTextureBlend
W3D_BLEND_STAGE,0,
W3D_COLOR_COMBINE,W3D_COMBINE_DISABLED
W3D_ALPHA_COMBINE,W3D_COMBINE_DISABLED
[69438][34434]W3D_SetTextureBlend
[69439][34435]W3D_SetTextureBlend
W3D_BLEND_STAGE,1,
W3D_COLOR_COMBINE,W3D_COMBINE_DISABLED
W3D_ALPHA_COMBINE,W3D_COMBINE_DISABLED
[69440][34436]W3D_SetTextureBlend
[69441][34437]W3D_SetTextureBlend
[69442][10328]W3D_InterleavedArray
[69443][2349]W3D_SetState
[X] state=W3D_CULLFACE
[69444][1390]W3D_SetFrontFace
direction=W3D_CCW

/* ici trace juste 2 triangles */

[69445][14740]W3D_DrawArray
SetTexStates
WC->state:Changed1 UseTex0 ST0 ZMode9 TexEnvMode0 BlendMode33 UseGouraud1 UseFog0 (tex 0)
Adjusting WC->state ....
WC->state.BlendMode=33
WC->DstFunc=8
WC->SrcFunc=7
WC->state.BlendMode=33
WC->state:Changed1 UseTex0 ST0 ZMode9 TexEnvMode0 BlendMode33 UseGouraud1 UseFog0
primitive=W3D_PRIMITIVE_TRISTRIP
base=0
count=4
DrawPrimitive

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=965&forum=14