Path: chuka.playstation.co.uk!news From: James Russell Newsgroups: scee.yaroze.programming.3d_graphics Subject: Re: OT's - how do they work? Date: Mon, 20 Oct 1997 14:30:45 +1300 Organization: Peace Computers NZ Ltd Lines: 58 Message-ID: <344AB445.6113@peace.co.nz> References: <3446DC9D.BB81C6EE@ibm.net> <344b4014.300721@news.playstation.co.uk> NNTP-Posting-Host: 202.37.70.35 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.0Gold (X11; I; IRIX 6.2 IP22) Alex Amsel wrote: > > >I'm writing up a 2D graphics tutorial and although I've used OT's to get > >my stuff working, it was all straight from the examples. Closer > >inspection revealed that an OT is just an array of OT_TAGS, which are > >just 32 bit wide bit fields: > > > >unsigned p:24; > >unsigned num:8; > > > >So what I want to know is: > > > >What is p? What is num? > > p is a 24 bit pointer to the next OT_TAG. > num is a primitive code from > which the ps-x knows what data immediately follows the OT_TAG. > e.g. POLY_FT4, POLY_GT3 and similar > > >How do they specify which GPU packets get sent, and in what order? How > >is the linked list maintained? > > Presuming you know how the basic OT works, within each 'slot', the > last polygon placed in each slot is the first polygon drawn of that > slot. This can be useful to know (especially when inserting OTs into > existing OTs). OK, That answers some questions, but raises others: I'm assuming that an ordering table would be a linked list of polygons/sprites to draw, and each polygon/sprite would have: o - An associated Z value o - A pointer to the GPU commands required to draw that polygon. When I insert a polygon of a given Z, it would search though the list until it found the appropriate place, plonk itself there in the middle of the list, create some space somewhere for the GPU packets and set it's pointer to them. Now the PSX OT_TAG's have a pointer to the next OT_TAG (p) but don't have an associated Z value or a pointer to the GPU commands to be executed. I take it the actually index number of an OT_TAG in the OT_TAG array has nothing to do with the entry? It doesn't implicitly specify anything? So I don't understand how OT_TAGs actually relate to the GPU command data. Their order is implicit from their order in the list, but they don't store a Z so how can you decide where a new polygon should be inserted? How does my conception of an ordering table differ from the PSX implementation? J -- ==PEACE COMPUTERS ==James.Russell@peace.co.nz - 64(9)3730400 -Fax 64(9)3730401 One Chicken to bring them all and in the darkness bind them.