⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gp2gpcitest.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
 *	This routine calls the functions that will display polygons *	on the screen that are generated by passing parameters to the *	gp2's context blocks.  * *	First create 2, 1 meg screen save areas in memory then test *	with hsr mode turned on, then hsr mode turned off.   *	The mem_screens are used to save the 1st and 2nd paints of *	each pattern and compare them each other. If they don't match *	and error will be displayed. ******************************************************************** */test_polygons(){    char *hsr;    int k;    int planes = GP2_BUFSIZ - 1;    if ( !CgTWO )       planes = 0xFFFFFF;    if ((!exec_by_sundiag) || (debug))        gp_send_message(0, DEBUG, "\n\tTesting Polygons Commands\n");    mem_screen = create_screen();    mem_screen1 = create_screen();    loadmap();    for (k = 0; k < 2; k++) {        switch(k) {            case 0:		hsr = "on";		init_static_blk1();		break;            case 1:		hsr = "off";		init_static_blk2();		break;        }	pr_putattributes(screen, &planes);    	paint_polygons(hsr, mem_screen, mem_screen1);    }}/* ******************************************************************** *      test_arbiter * *      This routine calls the functions that will test the arbiter *      by writing into the cg9 from the p2 and vme simultaneously. * *      First create 2, 1 meg screen save areas in memory then test *      with hsr mode turned on, then hsr mode turned off. *      The mem_screens are used to save the 1st and 2nd paints of *      each pattern and compare them each other. If they don't match *      and error will be displayed. ******************************************************************** */test_arbiter()   {    int k;    int planes = 0xFFFFFF;    if ((!exec_by_sundiag) || (debug))        gp_send_message(0, DEBUG, "\n\tTesting Arbitration \n");    loadmap();    for (k = 0; k < 2; k++)    {        init_arbiter(k);        pr_putattributes(screen, &planes);        do_arbitration(k);    }} /* ******************************************************************** *      init_arbiter * *      1). set color to blue *      2). set to rop mode *      3). set hidden serface removal on. *      4). set width and line text. *      5). set view port whole screen. *      6). set to normal transform matrix. *      7). set clip list to whole screen. *      8). if option == 1 then set dither on ******************************************************************** */init_arbiter(dither_on_off)int dither_on_off;{    unsigned int bitvec;    int offset;    int planesmask;    short *shmptr;    float ftemp;     offset = 0;    offset = gp1_alloc(gp1_shmem, 1, &bitvec, minordev, ioctlfd);    if(offset == 0)         gp_send_message(-DEV_NO_STATBLK, FATAL, init_arbiter_msg1);     shmptr = &((short *) gp1_shmem)[offset];    *shmptr++ = GP1_USE_CONTEXT | statblk;    *shmptr++ = GP1_SET_FB_NUM | gp1_d(screen)->cg2_index;    *shmptr++ = GP1_SET_ROP;    *shmptr++ = PIX_SRC;    pr_getattributes(screen, &planesmask);    *shmptr++ = GP1_SET_CLIP_PLANES | 0x3F;    *shmptr++ = GP1_SET_HIDDEN_SURF | GP1_ZBHIDDENSURF;    *shmptr++ = GP1_SET_MAT_NUM | 0;    *shmptr++ = GP1_SET_LINE_WIDTH;    *shmptr++ = 1;    *shmptr++ = 0;    *shmptr++ = GP1_SET_LINE_TEX;    *shmptr++ = 0;    *shmptr++ = 0;    *shmptr++ = 0;    *shmptr++ = GP1_SET_VWP_3D;    ftemp = 576.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 576.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = -450.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 450.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 30000.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    *shmptr++ = GP1_SET_MAT_3D | 0;    ftemp = 1.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 1.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 1.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 0.0;    GP1_PUT_F(shmptr, ftemp);    ftemp = 1.0;    GP1_PUT_F(shmptr, ftemp);    *shmptr++ = GP1_SET_CLIP_LIST;    *shmptr++ = 1;    *shmptr++ = 0;    *shmptr++ = 0;    *shmptr++ = 1152;    *shmptr++ = 900;    *shmptr++ = GP2_SET_DITHER | dither_on_off;    *shmptr++ = GP1_EOCL | GP1_FREEBLKS;    GP1_PUT_I(shmptr, bitvec);    if ((gp1_post(gp1_shmem, offset, ioctlfd)) != 0)        gp_send_message(-SYNC_ERROR, FATAL, init_arbiter_msg2);}/* ******************************************************************** *      gp2_arb_poly3 *       *      This routine will draw some polys in a window and iterate *      given number of times switching colors. ******************************************************************** */  gp2_arb_poly3(count,x,y,width,height)int count,x,y,width,height;{    register int m, i, j, *nvp, overflow;    unsigned int bitvec;    register int offset, roomleft;    register short *shmptr, *nvshmptr;    register float *ptr;    int needed;    float xleft,xright,ytop,ybottom,ftemp,r,g,b;    int itemp;    int blocks_per_transfer = 6;        xleft = (float) (((float)x)/((float)(screen->pr_size.x/2.0))-1.0);    xright = (float)((float)(x+width)/(float)(screen->pr_size.x/2.0)-1.0);    ytop   = (float)(-(y/(screen->pr_size.y/2.0))+1.0);    ybottom = (float)(-((y+height)/(screen->pr_size.y/2.0))+1.0);     offset = 0;    offset = gp1_alloc(gp1_shmem, blocks_per_transfer, &bitvec, minordev, ioctlfd);    if (offset == 0)    {         gp_send_message(-DEV_NO_STATBLK, FATAL, gp2_arb_poly3_msg1);    }    shmptr = &((short *) gp1_shmem)[offset];    *shmptr++ = GP1_USE_CONTEXT | statblk;     for(i = 0; i < count; i++)    {        /*        * Clear the z buffer for the specified window.        */         *shmptr++ = GP1_SETZBUF;        *shmptr++ = 0xFFFF;        *shmptr++ = x;        *shmptr++ = y;        *shmptr++ = width;        *shmptr++ = height;         if(i%2)        {            b = .75;            *shmptr++ = GP2_XF_PGON_FLT_3D_RGB | GP2_RGB_COLOR_TRIPLE;            *shmptr++ = 1;            *shmptr++ = 4;            g = ftemp = xleft+.05*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            r = ftemp = ytop-.05*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            g = ftemp = xleft+.5*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            r = ftemp = ytop-.05*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            g = ftemp = xleft+.85*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            r = ftemp = ytop-.9*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            g = ftemp = xleft+.35*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            r = ftemp = ytop-.9*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            r = .75;            *shmptr++ = GP2_XF_PGON_FLT_3D_RGB | GP2_RGB_COLOR_TRIPLE;            *shmptr++ = 1;            *shmptr++ = 4;            g = ftemp = xleft+.45*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            b = ftemp = ytop-.1*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            g = ftemp = xleft+.95*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            b = ftemp = ytop-.1*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            g = ftemp = xleft+.65*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            b = ftemp = ytop-.95*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            g = ftemp = xleft+.15*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            b = ftemp = ytop-.95*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);        }        else        {            g = 0.8;            *shmptr++ = GP2_XF_PGON_FLT_3D_RGB | GP2_RGB_COLOR_TRIPLE;            *shmptr++ = 1;            *shmptr++ = 4;            r = ftemp = xleft+.05*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            b = ftemp = ytop-.05*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            r = ftemp = xleft+.5*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            b = ftemp = ytop-.05*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            r = ftemp = xleft+.85*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            b = ftemp = ytop-.9*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            r = ftemp = xleft+.35*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(r < 0.0) r *= -1.0;            b = ftemp = ytop-.9*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            r = .9;            *shmptr++ = GP2_XF_PGON_FLT_3D_RGB | GP2_RGB_COLOR_TRIPLE;            *shmptr++ = 1;            *shmptr++ = 4;            b = ftemp = xleft+.45*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            g = ftemp = ytop-.1*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            b = ftemp = xleft+.95*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            g = ftemp = ytop-.1*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            ftemp = 0.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            b = ftemp = xleft+.65*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            g = ftemp = ytop-.95*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);            ftemp = b; GP1_PUT_F(shmptr,ftemp);            b = ftemp = xleft+.15*(xright-xleft); GP1_PUT_F(shmptr,ftemp);            if(b < 0.0) b *= -1.0;            g = ftemp = ytop-.95*(ytop-ybottom); GP1_PUT_F(shmptr,ftemp);            if(g < 0.0) g *= -1.0;            ftemp = 1.0; GP1_PUT_F(shmptr,ftemp);            ftemp = r; GP1_PUT_F(shmptr,ftemp);            ftemp = g; GP1_PUT_F(shmptr,ftemp);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -