Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for (y = 0; y < renderer->base.frame_h; y++)
- {
- for (x = 0; x < renderer->base.frame_w; x++)
- {
- if (renderer->head_pointer_buffer[x + y * renderer->base.frame_h] != -1)
- {
- j = renderer->head_pointer_buffer[x + y * renderer->base.frame_h];
- while (j != -1)
- {
- S_Frag *fragment = fragvecGetPtr(renderer->node_buffer, j);
- col[index] = fragment->color;
- dep[index] = fragment->depth;
- index++;
- j = fragment->next;
- }
- for (j = 1; j < index; j++)
- {
- i = j;
- while (i > 0 && dep[i - 1] > dep[i])
- {
- tmp1 = dep[i];
- tmp2 = col[i];
- dep[i] = dep[i - 1];
- col[i] = col[i - 1];
- dep[i - 1] = tmp1;
- col[i - 1] = tmp2;
- i--;
- }
- }
- for (j = 0; j < index; j++)
- {
- a_src = col[j].alpha / 255.0;
- c_dst_red = a_dst * ( col[j].red) + c_dst_red;
- c_dst_green = a_dst * ( col[j].green) + c_dst_green;
- c_dst_blue = a_dst * ( col[j].blue) + c_dst_blue;
- a_dst = (1.0 - a_src) * a_dst;
- }
- c_dst_red = a_dst * PIXEL(pRenderer, x, y).red + c_dst_red;
- c_dst_green = a_dst * PIXEL(pRenderer, x, y).green + c_dst_green;
- c_dst_blue = a_dst * PIXEL(pRenderer, x, y).blue + c_dst_blue;
- a_dst = 1.0;
- PIXEL(pRenderer, x, y).red = ROUND2BYTE(c_dst_red);
- PIXEL(pRenderer, x, y).green = ROUND2BYTE(c_dst_green);
- PIXEL(pRenderer, x, y).blue = ROUND2BYTE(c_dst_blue);
- PIXEL(pRenderer, x, y).alpha = ROUND2BYTE(a_dst);
- }
- index = 0;
- c_dst_red = 0.0;
- c_dst_green = 0.0;
- c_dst_blue = 0.0;
- a_dst = 1.0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement