Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!ames!pasteur!ucbvax!BRL.ARPA!glennrp From: glennrp@BRL.ARPA (Glenn Randers-Pehrson, WMB) Newsgroups: comp.sys.sgi Subject: Re: Z-buffering Problems... Message-ID: <8804220837.aa12653@TBD.BRL.ARPA> Date: 22 Apr 88 12:36:29 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 106 > From: zyda@NPS-CS.ARPA (michael zyda) > Subject: Z-buffering Problems... > IRIS 4D/70G Z-Buffering Problems... > > Problem: At the intersection of the sea and land you cannot > rely on the Z-buffer to always draw the land over the water > or even to consistently draw it the same. > > This solution is not very acceptable. Does anyone out there > have similar experiences?" > Yes. On a 2500T, 3130, and 3030, I attempted to do a hidden-line wireframe by drawing the filled polygons in a background color and then drawing unfilled polygons. It did not work very well. I complained to SGI and was told it was due to the resolution of the geometry engine calculations. I think the exact quote was that "It works as designed". [i.e. not necessarily as specified in the manual]. Here's a copy of my e-mail to SGI: Glenn Randers-Pehrson Date: Thu, 3 Dec 87 12:21:54 EST From: Glenn Randers-Pehrson (WMB) To: dave@sgi.com Subject: polly() Re: HOTLINE log 1824, 3 Dec 87 program pollytest c demonstrates that poly() does not outline polygons properly c in conjuntion with polf() in z-buffer mode. Tests polly() c by Glenn Randers-Pehrson, which attempts to do this properly. dimension square(3,4) integer near,far character*1 key data near,far/x'c000',x'3fff'/ call ginit call greset call cursof call setdep(near,far) call ortho (0., 1.0, 0.0, 1.0, 1.0,-1.0) call zbuffe(.true.) call color(0) call clear do 200 mode=0,1 call zclear kol=1 do 100 k=1,2 x=.025*k + .5*mode y=.025*k + .1 z=k-1.5 + x*.01 square(1,1)=x square(2,1)=y square(3,1)=z+.01 square(1,2)=x+.3 square(2,2)=y square(3,2)=z+.01 square(1,3)=x+.3 square(2,3)=y+.3 square(3,3)=z+.02 square(1,4)=x square(2,4)=y+.3 square(3,4)=z call color(kol) call polf(4,square) call color(3) call cmov2(x,.5) if(mode.eq.1)then if(k.eq.1)call charst('polly()',7) call color(2) call polly(4,square) else if(k.eq.1)call charst('poly()',6) call color(2) call poly(4,square) endif kol=4 100 continue 200 continue 300 continue read(*,'(a1)')key call fhalt(1) end subroutine polly(n,xyz) c FORTRAN version of poly() that uses zbuffer consistently c with polf(), for use in making outlined polygons c by Glenn Randers-Pehrson c U.S. Army Ballistic Research Laboratory c Aberdeen Proving Ground, MD 21005-5066 dimension xyz(3,n) dimension temp(3,2) do 10 j=1,3 temp(j,1)=xyz(j,n) 10 continue do 40 i=1,n do 20 j=1,3 temp(j,2)=xyz(j,i) 20 continue call polf(2,temp) do 30 j=1,3 temp(j,1)=temp(j,2) 30 continue 40 continue return end