Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 23 Apr 2003
Offline Last Active Nov 09 2014 04:23 AM

Posts I've Made

In Topic: Anyone here a self-taught graphics programmer?

21 September 2013 - 11:49 PM

I'm super busy working on Battlefield 4, but this is an awesome thread, so I thought I'd link my own story (published recently on BioWare's blog).






In Topic: Asynchronous Asset Loading (data streaming)

17 November 2010 - 09:28 PM

Some great replies here so far. One suggestion I wanted to add is avoid doing look ups into your data manager by string. This pattern never scales (huge performance hit with a large catalog), uses a lot of memory, and often causes fragmentation. Instead, I would generate a hash of your asset names (32bit or 64bit, possibly working in a bucketed hash to handle collisions) and make your requests against hash values instead.


In Topic: Making a certain color in a texture 'clear' ?

05 January 2009 - 04:56 AM

What you want is color keying. For the most part, color keying is not hardware accelerated, and generally textures are preprocessed to remove keyed transparency pixels before being submitted to the GPU. Doing this on the GPU in hardware with a pixel shader is super easy and fast as well.

Check out the color keying sample on this page:


Hope that helps!

In Topic: one texture for whole font vs one texture per char

05 December 2008 - 04:44 PM

ya, you should really use a texture atlas for your font instead of individual textures because of the draw call overhead.


In Topic: Messages outgoing buffer, avoiding frequent heap allocations

29 November 2008 - 04:02 PM

hplus0603 is right on the money. Use object pools for fixed size rapid allocations; custom memory managers - with techniques like a small block allocator - are really only useful for allocations that are not a fixed size, but are small and within a common average allocation size. Ring buffers are cool, but really only if you have a good idea of what the ring buffer size should be. If your network traffic grows significantly each time a new client connects than I would avoid it. Ring buffers can be very useful for reducing thread lock contention however (single directional).

Another nice thing about fixed size allocator + object pools is when you know the main initial pool size up front. Knowing this ahead of time allows you to allocate all memory related to the initial pooled objects in a large contiguous block, which of course greatly helps out with fragmentation (in certain instances).