[comp.sys.amiga.tech] Double Buffering

bmacintyre@watcgl.waterloo.edu (Blair MacIntyre) (10/09/89)

I'm trying to create a double buffered display.  I had it working for the
longest time using the following method:
	2 BitMap structs - one in Screen->Viewport.RasInfo->BitMap
			   the other in Screen->RastPort.BitMap
	swap them to double buffer
	call MakeScreen( Screen )
	     ReThinkDisplay();

A while ago someone told me to use ScrollVPort( &screen->Viewport ) to achieve
the double buffered affect, so I looked up the function and low and behold,
it says that by "leaving the dx,dy offsets 0 and changing the BitMap pointer
a double buffering effect can be achieved" ( or something to that effect ).

The problem is this:
	I substitute the ScrollVPort call for the other two calls and the
	following happens:  the double buffering works ( a Good thing! ) but
	all the lines on the display cease to be drawn correctly.  What I
	mean is this.   A line that used to be rastorized like this

				********
			********
		********
	********

	now appears like this
				********
		********
			********
	********

	This happens to all the lines on the display ( I am not using text
	so I don't know if it would happen to it as well )

Any ideas what may be causing this?  I'm at a loss.

Blair
-- 
= Blair MacIntyre, bmacintyre@watcgl.{waterloo.edu, UWaterloo.ca}          // =
=   now appearing at the Computer Graphics Lab, U of Waterloo!           \X/  =
= Ignore my opinions ... they are the product of an imagination preoccupied   =
= with sex, or so they tell me ... *sigh*                                     =

aaron@madnix.UUCP (Aaron Avery) (10/12/89)

In article <11833@watcgl.waterloo.edu> bmacintyre@watcgl.waterloo.edu (Blair MacIntyre) writes:
>I'm trying to create a double buffered display.  I had it working for the
>longest time using the following method:
>	2 BitMap structs - one in Screen->Viewport.RasInfo->BitMap
>			   the other in Screen->RastPort.BitMap
>	swap them to double buffer
>	call MakeScreen( Screen )
>	     ReThinkDisplay();

This works, but the only relevent one is RasInfo->BitMap. The other one
should probably be in your own memory. And remember to use Pointers for this.
There's no need to shift the whole structure around.

>The problem is this:
>	I substitute the ScrollVPort call for the other two calls and the
>	following happens:  the double buffering works ( a Good thing! ) but
>	all the lines on the display cease to be drawn correctly.  What I

Methinks you're in interlaced mode. This is a bug in ScrollVPort which I
reported many moons ago. Since 1.3 did not include bug fixes such as this,
we'll have to wait for 1.4 for ScrollVPort to work with LACE mode viewports.

Also note that Jim Mackraz says that double buffering and Intuition don't
get along yet. I think the ReThinkDisplay() is safest (though slow), since
it's an Intuition call.

- Aaron

-- 
Aaron Avery, ASDG Inc.         "A mime is a terrible thing to waste."
                                                             -- Robin Williams
ARPA: madnix!aaron@cs.wisc.edu   {uunet|ncoast}!marque!
UUCP:   {harvard|rutgers|ucbvax}!uwvax!astroatc!nicmad!madnix!aaron

bmacintyre@watcgl.waterloo.edu (Blair MacIntyre) (10/16/89)

In article <934@madnix.UUCP> aaron@madnix.UUCP (Aaron Avery) writes:
>In article <11833@watcgl.waterloo.edu> bmacintyre@watcgl.waterloo.edu (Blair MacIntyre) writes:
>>I'm trying to create a double buffered display.  I had it working for the
>>longest time using the following method:
>
>Methinks you're in interlaced mode. This is a bug in ScrollVPort which I
>reported many moons ago. 

Oops, as a matter of fact I am using interlaced mode.  Thanks very much
to everyone who replied!  


-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=       Blair MacIntyre, bmacintyre@watcgl.{waterloo.edu, UWaterloo.ca}       =
=           Professional Leech on Society ( aka Graduate Student )            =
=Now playing for an extended time at the University of Waterloo (Ontario, Can)=