hgeSprite::SetZ

Set the Z-order depth value for sprite rendering.

Synopsis

void hgeSprite::SetZ(float z, int i = -1);

Parameters

  • z — Z-depth value (0.0 to 1.0)
  • i — Vertex index (0-3), or -1 to set all vertices (default)

Description

Sets the Z-buffer depth value for the sprite's vertices. When using z-buffered rendering, sprites with lower Z values appear in front of sprites with higher Z values.

Z-Buffer Rendering

Z-ordering only takes effect when the z-buffer is enabled:

hge->System_SetState(HGE_ZBUFFER, true);

With z-buffering enabled, you can render sprites in any order and they'll be depth-sorted correctly.

Value Range

Z values range from 0.0 (front) to 1.0 (back). Objects with lower Z values are drawn in front.

Example

// Create layered sprites
hgeSprite *background = new hgeSprite(texBg, 0, 0, 800, 600);
hgeSprite *player = new hgeSprite(texPlayer, 0, 0, 64, 64);
hgeSprite *foreground = new hgeSprite(texFg, 0, 0, 800, 600);

// Set Z order
background->SetZ(0.9f);   // Back
player->SetZ(0.5f);       // Middle
foreground->SetZ(0.1f);   // Front

bool RenderFunc()
{
    hge->Gfx_BeginScene();
    hge->Gfx_Clear(0);
    
    // Can render in any order - z-buffer handles sorting
    player->Render(px, py);
    foreground->Render(0, 0);
    background->Render(0, 0);
    
    hge->Gfx_EndScene();
    return false;
}

Per-Vertex Z

For perspective effects, you can set different Z values per vertex:

sprite->SetZ(0.5f, 0);  // Top-left
sprite->SetZ(0.5f, 1);  // Top-right
sprite->SetZ(0.7f, 2);  // Bottom-right
sprite->SetZ(0.7f, 3);  // Bottom-left

Performance Note

If you don't need z-buffered rendering and always render back-to-front, disable the z-buffer for better performance:

hge->System_SetState(HGE_ZBUFFER, false);

See Also