Subject:
|
Re: Several replies to CLIPPING / WINDING
|
Newsgroups:
|
lugnet.cad.dev
|
Date:
|
Mon, 18 Oct 1999 13:41:26 GMT
|
Viewed:
|
522 times
|
| |
| |
Rui Martins wrote:
>
> Well, the ideia is to minimize the state change, but if you have to make
> some, that is not so drastic. On some hardware, some state/option
> changes, force a flush in the hardware buffers, which breaks up the
> pipeline & eventually hurts performance, but this is not the case.
I understand that you would be allowed to have as many "0 CCW"/"0 CW"
lines as you want. This will hurt performance and of course, it would be
better if you could use only 1 call per part.
> One nasty case is to mix 2D & 3D rendering, every time you change from 2D
> to 3D rendering, in every hardware available, it forces a flush, and
> performance will probably drop significantly.
You don't need to do that with LDraw files, except for writing any
text on the screen. :)
> I think that what you are referring is "display lists", which in fact
> are controlled by your program, which you are responsible to optimize.
> So this is not very relevant, even because an optimized part will be
> loaded an kept in a display list for further reference, an also because
> an optimized .DAT file will have an unique meta command "0 CLIPPING ON"
I wasn't talking about display lists, and I don't think that the
discussion is going to lead to a single "0 CLIPPING ON" meta command.
The OpenGL drivers are not forced to do any optimizations in the display
lists, if they want they can just copy the same commands when you call
the list.
> R> Another problem is that you have to send the elements in a slower way
> R> to be able to change the culling parameters. If you don't believe me
>
> Never heard that one! ;)
> Could someone enlighten me ?
I meant that you would have to use a glEnd(), call glFrontFace() and
then glBegin() again, which is much slower than having everything drawn
with a single call to glDrawElements().
> This depends on what changes you change.
> But the use of vertex arrays is the wait to go, because it reduces the
> amount of floating point math, because usually an object shares several
> vertexs between several polygons.
Not exactly, you have to lock the arrays to have the vertexes
transformed only once and you can't change any states (not even the
colors) while you have the arrays locked. Or if you are using a display
list and if who wrote the driver was smart enough then the vertexes will
be transformed once (but you can't assume that).
To use a vertex array you also need to have all vertexes indexed,
which is not the case of the DAT files and one of the reasons why I have
my own file format.
Leonardo
|
|
Message has 1 Reply: | | Re: Several replies to CLIPPING / WINDING
|
| (...) In fact you can, use as many as you like, but that it's not the goal. if you read my previous mail, following this one I'am replying, you got the ideia that no WINDING meta command is the ideia, if the .DAT is well optimized. If someone want's (...) (25 years ago, 18-Oct-99, to lugnet.cad.dev)
|
Message is in Reply To:
| | Several replies to CLIPPING / WINDING
|
| R> If you keep changing states (turning backface culling on/off or R> changing front faces from CW to CCW) very often, you'll get a *slower* R> rendering in OpenGL (don't know about D3D). And remember that in a R> couple of months nVidia's GeForce (...) (25 years ago, 18-Oct-99, to lugnet.cad.dev)
|
15 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
This Message and its Replies on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|