peterk@cbmger.UUCP (Peter Kittel GERMANY) (12/20/90)
Here a question for a little project I perhaps would like to continue during the holidays: I want to draw FAST, filled circles in arbitrary size and in arbitrary (but solid) color on a 4-bitplane hires screen. You see, I still love these first-day Caleidoscope demos and want to do similar things on my own. BTW: These Caleidoscope demos had an announcement in their opening screen that this was only a demo for a real, coming product by Electronic Arts with which you were said to be able to create all such effects on your own. But this product never made it to the public. I already wrote to EA whether they could let me the source for it but got no answer. Anyone existing with better connections to them? So I was left on my own. I already achieved some nice line art effects, also solid area things, but my current attempts with circles are not very satisfying. So: what strategy is optimal? 1. Is AreaEllipse() simply the best? (I tried it, see above.) 2. I already tried to make up my own 32-edge polygon and draw it with AreaDraw()/AreaEnd. I would prefer to find a faster solution. 3. Would it be better to manage the 4 bitplanes separately by hand in an own loop? Which Blitter commands would be appropriate for this from C? One advantage in this special situation is that the objects have solid color. Thus the mask for any cookie-cutting has the same shape in every bitplane as the object itself, it only has to be inverted for some (or null) of the bitplanes. I imagine a single bitmap set aside which holds a one-bitplane circle and its inverted image and using this as sources for all the Blitter operations. Perhaps I can make this bitplane a little bigger providing space for circles and masks of many different sizes so that they only need to be computed one single time at start. Hmm, do I really need that inverted circle image? Isn't this inversion already done by simply using the proper minterms for the Blitter? (You see, I'm no expert in this, ... yet :-) 4. To avoid flickering, I think about syncing the drawing with WaitTOF(). If one circle is too big to get drawn fully during one vertical scan (I assume this program runs alone on the machine, NO multitasking, pure demo as fast as possible), then I think about cutting the circle in two halfs (or even more parts) so that the eye perhaps may follow the drawing process but sees no color flickering resulting from incomplete bitmaps. 5. Would it be necessary to turn to assembler to gain further performance? Well, if some kind soul may enlighten me or simply point me to the proper place in the RKMs... Have a nice Christmas and a happy plus successfull new year! -- Best regards, Dr. Peter Kittel // E-Mail to \\ Only my personal opinions... Commodore Frankfurt, Germany \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk
walrus@wam.umd.edu (Udo K Schuermann) (12/21/90)
In article <656@cbmger.UUCP> peterk@cbmger.UUCP (Peter Kittel GERMANY) writes: > >Here a question for a little project I perhaps would like to >continue during the holidays: > >I want to draw FAST, filled circles in arbitrary size and in >arbitrary (but solid) color on a 4-bitplane hires screen. >You see, I still love these first-day Caleidoscope demos and >want to do similar things on my own. > [stuff deleted] Before I had a chance to fix Kaleidoscope (Polyscope?) to run entirely in Chip RAM (and make it harddisk installable) I had a few neat crashes that left me with a brown screen and a bunch of circles in different sizes and colors drawn on it, in a grid pattern. From this I assume that EA pre-draws these items on a screen in the background, then uses the blitter to transfer different sizes and colors from one screen to another. I don't know if they're using more than one screen to store different colors, sizes, etc. Btw: my copy of PolyScope runs on a 5 Meg 68030, off the HD. It won't exit, but it will run. It's faster, too :-) Polyscope on caffeine. >5. Would it be necessary to turn to assembler to gain further > performance? Can't hurt if you do that in time-critical places, but it shouldn't be necessary. PolyScope is written in C (at least there are %ld in the debugging statements of the code). Try it in C first, then find out where the bottle-necks are. Optimize those with assembler. >Have a nice Christmas and a happy plus successfull new year! And the same to you! >Best regards, Dr. Peter Kittel // E-Mail to \\ Only my personal opinions... >Commodore Frankfurt, Germany \X/ {uunet|pyramid|rutgers}!cbmvax!cbmger!peterk Cheers! ._. Udo Schuermann "How is American beer similar to making love in ( ) walrus@wam.umd.edu a canoe?" -- "Both are f***ing close to water."