[comp.sys.sgi] XOR mode

paquette@cpsc.ucalgary.ca (Trevor Paquette) (06/27/90)

  Is there a cheap and dirty way to get XOR mode when doing a draw(),
 sboxf() or even bgnline()..endline()? I am porting an application that
 uses alot of the sunview 'PIX_SRC|PIX_DST' modes when writing to the
 screen. As far as I know about the sgi there is no 'built in' XOR
 mode for doing lines and/or block writes. I really don't want to write
 my own bres' algorithm for lines, checking for pixels along the way
 and XORing them myself, nor do I want to do that for each pixel in a 
 block write.
   Can this be done easily? or should have have another go through the
 manuals and see what I missed.
 Trev
___________________________________________/No man is a failure who has friends
Trevor Paquette  ICBM:51'03"N/114'05"W|I accept the challange, body and soul,
{ubc-cs,utai,alberta}!calgary!paquette|to seek the knowledge of the ones of old
paquette@cpsc.ucalgary.ca             | - engraved on the Kersa Blade of Esalon

blbates@AERO4.LARC.NASA.GOV ("Brent L. Bates AAD/TAB MS361 x42854") (06/27/90)

    Perhaps you need to use the alpha planes. (If you have them)
--

	Brent L. Bates
	NASA-Langley Research Center
	M.S. 361
	Hampton, Virginia  23665-5225
	(804) 864-2854
	E-mail: blbates@aero4.larc.nasa.gov or blbates@aero2.larc.nasa.gov

kurt@cashew.asd.sgi.com (Kurt Akeley) (06/27/90)

In article <1990Jun27.040030.17013@calgary.uucp>,
paquette@cpsc.ucalgary.ca (Trevor Paquette) writes:


|> 
|>   Is there a cheap and dirty way to get XOR mode when doing a draw(),
|>  sboxf() or even bgnline()..endline()? I am porting an application that
|>  uses alot of the sunview 'PIX_SRC|PIX_DST' modes when writing to the
|>  screen. As far as I know about the sgi there is no 'built in' XOR
|>  mode for doing lines and/or block writes. I really don't want to write
|>  my own bres' algorithm for lines, checking for pixels along the way
|>  and XORing them myself, nor do I want to do that for each pixel in a 
|>  block write.
|>    Can this be done easily? or should have have another go through the
|>  manuals and see what I missed.
|>  Trev

The GL command logicop() allows any of the 16 logical operations to be
specified for all drawing commands (points, lines, polygons, surfaces,
characters, etc.).  Even the syntax PIX_SRC|PIX_DST is supported:

    logicop (LO_SRC | LO_DST);

However, logicop is supported only by the newer hardware platforms.
You can use the command

    getgdesc(GD_LOGICOP)

to determine whether logicop is supported on a given machine.  I believe
that the Personal Iris with the RE2 chip, recently shipped GT/GTX
systems with no alpha bitplanes, and VGX systems are the only machines that
support logicop().

-- kurt