Recent Resources
-
GLSL 4.0: Discarding Fragments to Create a Perf...
-
GLSL 4.0: Using Subroutines to Select Shader Fu...
-
Building a Complete Board-based Puzzle Game wit...
-
JIRA: Programming Workflows
-
.NET Generics 4.0: Container Patterns and Best...
-
Raw Meat: Game Design Tips from Team Meat's...
-
Sedge: An Automated Error Reporting Tool
8-Bit Indexed Color Translucency
By Travis Bemann | Published Jul 05 2000 06:24 PM in Graphics Programming and Theory
This article is on how to use 256 indexed color translucency. It does not work on 16-bit or 32-bit color due to memory constraints. It involves building a 256 by 256 unsigned char table, which contains the result of every color combination. The table would be extremely large with 16-bit or 32-bit color. The first index for the table (which is in the form of a 2D array) is the translucency color. The second index for the table is the color behind the translucent pixel. This is a function that shows how to use this translucency technique. (The translucency actually should not be in a function or method, even an inline method.) DON'T ACTUALLY USE THIS FUNCTION! IF A FUNCTION CALL WAS USED TO DRAW EACH SINGLE PIXEL IN A SINGLE SOLIDCOLOR POLYGON, IT WOULD BE HORRENDOUSLY SLOW!
Variables
Implementation
Variables
- x: the pixel's x coordinate
- y: the pixel's y coordinate
- c: the pixel's translucent color
- b: the target graphic's base address
- r: the target graphic's row bytes (includes padding, if there is any)
- t: a pointer to the mixing table
Implementation
void Polygon3D::DrawTranslucentPixel(unsigned long x, unsigned long y,
unsigned char c, unsigned char *b,
unsigned long r, unsigned char *t)
{
*(unsigned char*)(b+x+y*r) = t[c][*(unsigned char*)(b+x+y*r)];
}


















