Skip to main content
gamedev.net
🔒 Locked

Triangle Rasterization

Started by tj963 Jan 15, 2002 at 8:41 PM 3 replies 1.4k views
Original Post
tj963
tj963
Hi, How does efficient triangle rasterization work? I understand the concept(I think) and I have it implemented using and incremental system, it adds a certain value every pixel and scanline it moves. But it breaks down on triangles with flat tops and bottoms. It''s also really slow. I can only draw about tem triangles. If anybody has some source code, a link to some or even a description of how it''s supposed to work that would be very helpful. Thanks, tj963
tj963
tj963
tj963
Nobody knows anything about this? I realize I could just use D3D or OGL but I want to do this on my own.
tj963
WayfarerX
WayfarerX
I wrote a rasterizer in Java awhile back, this was my primary resource, good stuff.

Check out the rest of his site too. It''s well-known and very informative.

"So crucify the ego, before it''s far too late. To leave behind this place so negative and blind and cynical, and you will come to find that we are all one mind. Capable of all that''s imagined and all conceivable."
- Tool
------------------------------
"There is no reason good should not triumph at least as often as evil. The triumph of anything is a matter of organization. If there are such things as angels, I hope that they're organized along the lines of the mafia." -Kurt Vonnegut
Chaoslab
Chaoslab
I have just added the source to my triangle filler to the java forum, click here to see.

Hope that helps!

ujhkfkfk
DekuTree64
DekuTree64
I wrote a tri-filler a while back, and it ran pretty fast (did a textured version too, but it''s slower). The general idea is to render the triangle as 2 tris, one flat bottomed and the other flat topped. Of course you just bypass one half if your tri has a flat top or bottom (sort the vertices by y value, and compare y1 to y2, y2 to y3).
To render the top half, you can either compute the slope for the whole v1-v3 edge (might be slightly faster, since you can reuse it on the second half, but it loses a little accuracy), or find the x value on that edge at y2 (here''s how I do it: v1.x + (v3.x - v1.x) / (v3.y - v1.y) * height (where height is v2.y - v1.y)) and use that to find your slope. Also check wether that x value is greater than v2.x, and if so, swap them (store them in xLeft and xRight or whatever you want), then compute your slopes like (xLeft - v1.x) / height and the same for xRight. Then simply set xStart and xEnd to v1.x, and do a for y = v1.y to v2.y, adding the slopes to xStart and xEnd each time through, fill between xStart and xEnd and you have a half-triangle. The rest is just the same, except going from xLeft and xRight to v3.x, instead of v1.x to xLeft and xRight.

If you want, I can explain how I do clipping too (probably not the best method, but it seems to work good), but I don''t really have time right now, so I hope this helps as it is^_^



-Deku-chan

DK Art (my site, which has little programming-related stuff on it, but you should go anyway^_^)

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.