Extended image draw (per-draw custom shader, 0=default, enables shader effects per image).
Takes imageHandle (image handle from b2dLoadImage, positive integer), x (screen X position in pixels, integer), y (screen Y position in pixels, integer), shader (shader handle from b2dLoadImageShader or 0 for default, integer).
Returns nothing.
2D Overlay
Parameters & Returns
Parameters
imageHandleInt
xInt
yInt
shaderInt
Returns
Void
Quick Summary
Extended image draw (per-draw custom shader, 0=default, enables shader effects per image).
Takes imageHandle (image handle from b2dLoadImage, positive integer), x (screen X position in pixels, integer), y (screen Y position in pixels, integer), shader (shader handle from b2dLoadImageShader or 0 for default, integer).
Returns nothing.
Technical Exegesis...
Extended image draw (per-draw custom shader, 0=default, enables shader effects per image). Takes imageHandle (image handle from b2dLoadImage, positive integer), x (screen X position in pixels, integer), y (screen Y position in pixels, integer), shader (shader handle from b2dLoadImageShader or 0 for default, integer). Returns nothing.
Extended image draw (per-draw custom shader, 0=default, enables shader effects per image). Takes imageHandle (image handle from b2dLoadImage, positive integer), x (screen X position in pixels, integer), y (screen Y position in pixels, integer), shader (shader handle from b2dLoadImageShader or 0 for default, integer). Returns nothing. Creates draw command (CMD_DRAW_IMAGE type with shader parameter, stores current state snapshot), queues to command buffer (commands executed during b3dRenderWorld), shader applied during GPU rendering (custom pixel shader replaces default if shader > 0). Use to apply per-image effects (glow, outline, distortion on specific images), selective post-processing (shader only for certain sprites), or dynamic effects (conditional shaders based on game state). Shader behavior: shader=0 default rendering (standard alpha blend, no custom effects), shader>0 custom shader (uses loaded image shader from b2dLoadImageShader, applies pixel shader effects), per-draw override (different images can use different shaders in same frame), independent of global state (shader parameter separate from color/alpha/scale/rotation). Use cases: (1) Glow effect (b2dDrawImageEx(powerup, x, y, glowShader): glowing powerup), (2) Damage flash (b2dDrawImageEx(enemy, x, y, flashShader): red flash on hit), (3) Selection outline (b2dDrawImageEx(selected, x, y, outlineShader): highlight selected unit), (4) Conditional effect (If invisible Then b2dDrawImageEx(player, x, y, ghostShader) Else b2dDrawImageEx(player, x, y, 0)), (5) UI effects (b2dDrawImageEx(button, x, y, hoverShader): hover glow). Common patterns: custom = b2dDrawImageEx(img, x, y, shader) apply shader; default = b2dDrawImageEx(img, x, y, 0) no shader; conditional = If condition Then shader = effectShader Else shader = 0: b2dDrawImageEx(img, x, y, shader). Shader loading: load with b2dLoadImageShader (shader = b2dLoadImageShader("glow.hlsl"): load custom pixel shader), configure parameters (b2dSetImageShaderFloat/Int/etc set shader uniforms), apply to draw (pass shader handle to this function). State application: same as b2dDrawImage (color tint, alpha blend, scale, rotation from g_currentState applied), shader additonal processing (custom shader processes after state transforms, can access/modify color/alpha/UVs). Performance: same base cost as b2dDrawImage (~0.001ms queue), shader cost varies (custom pixel shader processing, simple shaders ~0.01ms, complex ~0.1-1ms per image), batching may break (different shaders prevent batching, each shader change costs PSO switch ~0.01ms). Validation: ignores if imageHandle invalid (handle not found in g_images map, silently skips draw), shader validation minimal (shader>0 used if found, shader<=0 or not found uses default), safe with invalid shader (falls back to default rendering if shader invalid). Related: b2dDrawImage standard version (no shader parameter, always uses default rendering), b2dDrawAnimImageEx animation with shader (draws animation frame with custom shader), b2dLoadImageShader loads custom shader (creates shader used by this function), b2dSetImageShaderFloat sets shader parameter (configures shader uniforms), b2dFreeImageShader frees shader (should not use shader after freeing).