Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Richard Heathfield <rjh@cpax.org.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: chosing "small 2d graphics library" interface |
| Date | 2015-04-02 17:45 +0100 |
| Organization | go, ion artisan! |
| Message-ID | <mfjrlk$aal$1@dont-email.me> (permalink) |
| References | (5 earlier) <fb892f4d-e9b7-4390-a11a-98e22dbb0556@googlegroups.com> <mfjhrp$vm$1@dont-email.me> <mfjik4$4d5$1@dont-email.me> <mfjj2d$5v8$1@dont-email.me> <f9e08937-c27d-40f8-9d36-b43fe471e0d6@googlegroups.com> |
On 02/04/15 17:21, Malcolm McLean wrote: > On Thursday, April 2, 2015 at 3:18:51 PM UTC+1, Richard Heathfield wrote: >> >> By the way, I anticipate at least a certain amount of intelligent >> disagreement over my choice of memory allocation strategy, and I can >> understand that. There's More Than One Way To Do It, and I like my way, >> and it works, but I realise that there are advantages to doing it in >> other ways. The OP might benefit from an "fewer mallocs" advocate's >> exposition of those advantages. (I could probably do it myself, but my >> heart wouldn't really be in it.) >> > Most existing libraries write to flat buffers. First, I'll tell you why that's a bad idea. Then I'll tell you why it's a good idea. :-) It's a bad idea because it makes the task of visualising the data structure more difficult, which means that you're more likely to introduce bugs when writing functions that address the buffer. Data structures that are easy to visualise have significant benefits. It's a good idea because (a) it's one malloc instead of dozens or hundreds or even, potentially, thousands; (b) you can address the whole buffer in one loop instead of two; (c) it makes blitting substantially simpler and faster, at least when you are dealing with entire rows (stride may help out here, of course); (d) if you really want a rectangle, it's easy enough to write interface code so that you can treat it like one, thus more or less negating the "bad idea" objection above. So, all in all, that would seem to be a win-win-win-scoredraw for a flat buffer. Which fact makes me ponder whether I need to rewrite my own library to use flat buffers. (Answer: inertia!) > An annoying thing about C is > that sometime you want to access the buffer on a per-pixel basis, at other > times on a per-channel basis, and you want to do that without making your > buffer too complicated. I don't quite get why that would be /particularly/ annoying in C, as opposed to some other language. Could you unpack that a little? >> Also, if I were writing the article over, I'd probably have made more >> (i.e. some!) use of the alpha channel in the SetColour function. My only >> excuse is that I forgot. I might even have taken the time to demonstrate >> Bresenham's line-drawing algorithm, and perhaps an ellipse plotting >> function. >> > Alpha raises lots of issues. It means that you can't write twice to a pixel and > assume that the second write is a no-op. It wouldn't have occurred to me to write twice to the same pixel in the same operation. Is there an advantage to doing that? > Also, a lot of systems pre-mulitply > alpha for performance reasons. And you've got to decide whether your starting > buffer is solid black, or total transparency. Or solid some-other-colour, presumably? > Brasenham's line drawing algorithm is one of those things which is useful for > intermediate output, but not so useful for final graphics. Users like anti- > aliased lines with nice joins, so in fact they are usually drawn as thin polygons. Fair comment, although personally I like single-pixel lines, jaggies and all! Yes, of course I like anti-aliased lines too. I like to have the choice. > But because of the join issue, you need to create an entire path, then submit > it. But that creates issues for branching lines. What do you mean by "the join issue"? -- Richard Heathfield Email: rjh at cpax dot org dot uk "Usenet is a strange place" - dmr 29 July 1999 Sig line 4 vacant - apply within
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-28 18:43 -0700
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-29 02:59 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 03:51 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-03-29 12:03 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 05:00 -0700
Re: chosing "small 2d graphics library" interface gof@somewhere.invalid (Gof) - 2015-04-01 08:02 +0000
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-01 09:40 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-01 04:04 -0700
Re: chosing "small 2d graphics library" interface Nobody <nobody@nowhere.invalid> - 2015-03-29 12:50 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 05:08 -0700
Re: chosing "small 2d graphics library" interface Jeff Higgins <jeff@invalid.invalid> - 2015-03-29 09:33 -0400
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 07:00 -0700
Re: chosing "small 2d graphics library" interface Jeff Higgins <jeff@invalid.invalid> - 2015-03-29 10:38 -0400
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 07:43 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 07:24 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 07:32 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-01 05:00 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-01 07:25 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 07:36 -0700
Re: chosing "small 2d graphics library" interface Jeff Higgins <jeff@invalid.invalid> - 2015-03-29 14:33 -0400
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-29 12:36 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-03-29 13:01 -0700
chosing "small 2d graphics library" interface asetofsymbols@gmail.com - 2015-04-02 04:12 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 04:56 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 05:10 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 05:31 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 09:40 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 13:32 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 05:50 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 14:01 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 06:37 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 14:58 +0100
Re: chosing "small 2d graphics library" interface Bartc <bc@freeuk.com> - 2015-04-02 15:11 +0100
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 15:18 +0100
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-04-02 09:21 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 09:34 -0700
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-04-02 09:47 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 09:45 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 09:57 -0700
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-04-02 10:15 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 18:34 +0100
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 18:35 +0100
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 17:45 +0100
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-04-02 10:12 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 18:28 +0100
Re: chosing "small 2d graphics library" interface Bartc <bc@freeuk.com> - 2015-04-03 01:06 +0100
Re: chosing "small 2d graphics library" interface luser droog <luser.droog@gmail.com> - 2015-04-02 17:05 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 07:51 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 15:56 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 08:14 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 16:25 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 08:45 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 17:00 +0100
Re: chosing "small 2d graphics library" interface Keith Thompson <kst-u@mib.org> - 2015-04-02 13:03 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-05 14:25 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 09:06 -0700
Re: chosing "small 2d graphics library" interface Rosario19 <Ros@invalid.invalid> - 2015-04-02 18:22 +0200
Re: chosing "small 2d graphics library" interface Rosario19 <Ros@invalid.invalid> - 2015-04-02 18:40 +0200
Re: chosing "small 2d graphics library" interface Robert Wessel <robertwessel2@yahoo.com> - 2015-04-03 00:20 -0500
Re: chosing "small 2d graphics library" interface Rosario19 <Ros@invalid.invalid> - 2015-04-04 10:35 +0200
Re: chosing "small 2d graphics library" interface CHIN Dihedral <dihedral88888@gmail.com> - 2015-04-04 09:53 -0700
Re: chosing "small 2d graphics library" interface Noob <root@127.0.0.1> - 2015-04-03 14:27 +0200
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-03 05:38 -0700
Re: chosing "small 2d graphics library" interface Jeff Higgins <jeff@invalid.invalid> - 2015-04-02 19:23 -0400
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-02 23:46 -0700
Re: chosing "small 2d graphics library" interface asetofsymbols@gmail.com - 2015-04-02 08:03 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-02 16:14 +0100
Re: chosing "small 2d graphics library" interface Keith Thompson <kst-u@mib.org> - 2015-04-02 12:42 -0700
Re: chosing "small 2d graphics library" interface CHIN Dihedral <dihedral88888@gmail.com> - 2015-04-03 14:27 -0700
Re: chosing "small 2d graphics library" interface Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-04-03 14:50 -0700
Re: chosing "small 2d graphics library" interface Keith Thompson <kst-u@mib.org> - 2015-04-02 10:47 -0700
Re: chosing "small 2d graphics library" interface Bartc <bc@freeuk.com> - 2015-04-02 20:09 +0100
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-03 06:02 +0100
Re: chosing "small 2d graphics library" interface Bartc <bc@freeuk.com> - 2015-04-03 11:40 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-03 03:52 -0700
Re: chosing "small 2d graphics library" interface Bartc <bc@freeuk.com> - 2015-04-03 12:05 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-03 04:36 -0700
Re: chosing "small 2d graphics library" interface Bartc <bc@freeuk.com> - 2015-04-03 13:28 +0100
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-03 06:04 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-03 07:28 -0700
Re: chosing "small 2d graphics library" interface fir <profesor.fir@gmail.com> - 2015-04-03 12:43 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-03 12:57 +0100
Re: chosing "small 2d graphics library" interface asetofsymbols@gmail.com - 2015-04-03 22:25 -0700
Re: chosing "small 2d graphics library" interface asetofsymbols@gmail.com - 2015-04-03 22:34 -0700
Re: chosing "small 2d graphics library" interface asetofsymbols@gmail.com - 2015-04-03 23:09 -0700
Re: chosing "small 2d graphics library" interface Richard Heathfield <rjh@cpax.org.uk> - 2015-04-04 09:23 +0100
chosing "small 2d graphics library" interface asetofsymbols@gmail.com - 2015-04-02 07:26 -0700
csiph-web