Erf de la 3D avec Xlib... ca c'est le boulot de neurone.. mais pour le moment je crois qu'il fait tourner qu'un cube... Mais tout depend de lui
Sinon j'ai fait un bench avec ExtGraphlib:
Source:
INT_HANDLER oldint7 = NULL;
INT_HANDLER oldint6 = NULL;
INT_HANDLER oldint5 = NULL;
volatile int mseconds50 =0;
volatile short count;
DEFINE_INT_HANDLER (myint5handler) { mseconds50--;}
DEFINE_INT_HANDLER (myint7handler) { }
DEFINE_INT_HANDLER (myint6handler) { }
unsigned short vaisseau[]={ 0x180, 0x180, 0x240, 0x240, 0x240, 0x240, 0x5A0, 0x7E0, 0xBD0, 0x2BD4, 0x33CC, 0x27E4, 0x4C32, 0xD99B, 0xDA5B, 0x7C3E};
#define h 16
void bench()
{
unsigned long k=0;
clrscr();
DrawStr(0,90,"Bench GO!",A_NORMAL);
oldint5 = GetIntVec(AUTO_INT_5);
SetIntVec(AUTO_INT_5, myint5handler);
oldint6 = GetIntVec(AUTO_INT_6);
SetIntVec(AUTO_INT_6, myint6handler);
oldint7 = GetIntVec(AUTO_INT_7);
SetIntVec(AUTO_INT_7, myint7handler);
asm("
movem.l %d0,-(%a7)
move.w #400,%d0
TRAP #1
movem.l (%a7)+,%d0
")
XClrGPlan();
k=0; mseconds50 =20;
while (mseconds50)
{
/////////////////////////////////////////
// Simulation XPxlLPut...
/////////////////////////////////////////
EXT_SETPIX(LCD_MEM,mseconds50,mseconds50); //utilisation du timer pour avoir des coordonnées dynamiques
EXT_CLRPIX(LCD_MEM-1,mseconds50,mseconds50); // decalage de -1 pour simuler le 2eme plan
EXT_SETPIX(LCD_MEM,mseconds50,mseconds50);
EXT_CLRPIX(LCD_MEM-1,mseconds50,mseconds50);
EXT_SETPIX(LCD_MEM,mseconds50,mseconds50);
EXT_CLRPIX(LCD_MEM-1,mseconds50,mseconds50);
EXT_SETPIX(LCD_MEM,mseconds50,mseconds50);
EXT_CLRPIX(LCD_MEM-1,mseconds50,mseconds50); // 4 fois
/////////////////////////////////////////
k++;
}
k=k*4;
printf_xy(10,0,"R1: %ld /s",k);
k=0; mseconds50=20;
while (mseconds50)
{
/////////////////////////////////////////
XPxlLPut(mseconds50,mseconds50);
XPxlLPut(mseconds50,mseconds50);
XPxlLPut(mseconds50,mseconds50);
XPxlLPut(mseconds50,mseconds50);
/////////////////////////////////////////
k++;
}
k=k*4;
printf_xy(10,10,"R2: %ld Sp",k);
k=0; mseconds50=20;
while (mseconds50)
{
/////////////////////////////////////////
XGSZoom16x16(10,10,S8);
XGSZoom16x16(10,10,S8);
XGSZoom16x16(10,10,S8);
XGSZoom16x16(10,10,S8);
/////////////////////////////////////////
k++;
}
k=k*4;
printf_xy(10,20,"R3: %ld Sp",k);
k=0; mseconds50=20;
while (mseconds50)
{
/////////////////////////////////////////
XGSZoom8x8(10,10,S8);
XGSZoom8x8(10,10,S8);
XGSZoom8x8(10,10,S8);
XGSZoom8x8(10,10,S8);
/////////////////////////////////////////
k++;
}
k=k*4;
printf_xy(10,30,"R3: %ld Sp",k);
ngetchx();
XClrGPlan();
XCpyGPlanToLCD();
SetIntVec(AUTO_INT_5, oldint5);
SetIntVec(AUTO_INT_6, oldint6);
SetIntVec(AUTO_INT_7, oldint7);
asm("
movem.l %d0,-(%a7)
clr.w %d0
TRAP #1
movem.l (%a7)+,%d0
")
ngetchx();
}
Bon voila les resultats du bench avec des piles plutot faibles:
Extgraphlib: 38080 pxl/s
_X_Lib: 68024 pxl/s
Noter que les piles sont faibles puisque XPxlLPut tourne d'habitude a 90k pxl/sec
Donc bin je sais pas comment tu fais tes benchs pphd, mais ya un probleme....
Au fait je part ce soir a 18h donc si j'ai pas ton bench avant, je pourais pas l'essayer avant dimanche prochain...