pawn@wpi.wpi.edu (Kevin Goroway) (02/21/89)
I hope someone can help me with this, because it is driving me crazy. I'm trying to set up a double buffered display. It works fine, except for one major point. My second (first) BitMap just isn't there... InitBitMap(&b[0],DEPTH,WIDTH,HEIGHT); ;this sets up my two bitmaps InitBitMap(&b[1],DEPTH,WIDTH,HEIGHT); ri.BitMap=&b[0]; ;this links the first into ;my RasInfo... vp.RasInfo=&ri; ;this links my RasInfo to my VPort for(temp=0;temp<2;temp++) ;this allocates and clears { ;my two bitmaps for(i=0;i<DEPTH;i++) { b[temp].Planes[i]=(PLANEPTR)AllocRaster(WIDTH,HEIGHT); if(b[temp].Planes[i]==NULL) exit(NOT_ENOUGH_MEMORY); } for(i=0;i<DEPTH;i++) { displaymem=(UBYTE *)b[temp].Planes[i]; BltClear(displaymem,RASSIZE(WIDTH,HEIGHT),0); } } InitRastPort(&rp); ;this sets up my Rastport rp.BitMap=&b[0]; ;and points to my first Bitmap ri.BitMap=&b[0]; ;this was done already MakeVPort(&v,&vp); ;begin setting up Double Buffer MrgCop(&v); LOF[0]=v.LOFCprList; SHF[0]=v.SHFCprList; ri.BitMap=&b[1]; ;other bitmap v.LOFCprList=NULL; v.SHFCprList=NULL; MakeVPort(&v,&vp); MrgCop(&v); LOF[1]=v.LOFCprList; ;ok, all done...but it doesn't work SHF[1]=v.SHFCprList; In a loop I say rp.Bitmap=&b[trigger], to alternate my bitmaps, but if I set it to &b[0], to force drawing into bp[0], it doesn't display squat, whereas &b[1] works fine... I have tried many variations, such as setting up 2 RasInfos, setting up two RastPorts, etc., but they all yield the same thing. No bitmap. I am sure that my LoadView(&v) works fine. (after I swap the LOF and SHF) So I'm stuck. any ideas? thanks! -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | Pawn@wpi.wpi.edu Worcester Polytechnic Institute, Mass, U.S.A. | | Pawn@wpi.Bitnet main() { printf("Hello World!\n); } | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
ewhac@well.UUCP (Leo 'Bols Ewhac' Schwab) (02/22/89)
[ Much convoluted code and consternation by Kevin deleted. ] Yuck. The approach documented in the RKM is icky, and hard to work with. I like this approach much better: -------- InitBitMap (&bm1, deep, wide, high); InitBitMap (&bm2, deep, wide, high); InitVPort (&vp1); InitVPort (&vp2); InitView (&v1); InitView (&v2); v1.ViewPort = &vp1; v2.ViewPort = &vp2; rasinfo1.BitMap = &bm1; rasinfo2.BitMap = &bm2; rasinfo1.Next = rasinfo2.Next = NULL; vp1.RasInfo = &rasinfo1; vp2.RasInfo = &rasinfo2; MakeVPort (&v1, &vp1); MakeVPort (&v2, &vp2); MrgCop (&v1); MrgCop (&v2); -------- At this point (.), you can LoadView() either v1 or v2, and it'll pop onto your screen at the next VBLANK. Much less pain and misery all around. _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ Leo L. Schwab -- The Guy in The Cape INET: well!ewhac@ucbvax.Berkeley.EDU \_ -_ Recumbent Bikes: UUCP: pacbell > !{well,unicom}!ewhac O----^o The Only Way To Fly. hplabs / (pronounced "AE-wack") "Work FOR? I don't work FOR anybody! I'm just having fun." -- The Doctor