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);