// test double buffering #include #include #include int main(void) { GrContext *buffer_one; GrContext *buffer_two; int i; if (!GrSetMode(GR_default_graphics)) { fprintf(stderr, "graphic init failed\n"); getchar(); exit(0); } buffer_one = GrScreenContext(); buffer_two = GrCreateContext(GrSizeX(), GrSizeY(), NULL, NULL); if(!buffer_two) { fprintf(stderr, "creating second buffer failed\n"); getchar(); exit(0); } GrClearScreen(GrWhite()); for ( i = 0; i < 10; ++i) { GrSetContext(buffer_two); GrClearContext(GrBlack()); GrLine(i * 40, 0, 400 - i * 40, 400, GrWhite()); GrBitBlt(buffer_one, 0, 0, buffer_two, 0, 0, GrMaxX(), GrMaxY(), GrWRITE); GrSetContext(buffer_one); GrKeyRead(); } return 0; }