Sets global active image shader (all subsequent b2dDrawImage use this shader, shader=0 resets to default).
Takes shader (shader handle from b2dLoadImageShader or 0 for default, integer).
Returns nothing.
Shaders
Parameters & Returns
Parameters
shaderInt
Returns
Void
Quick Summary
Sets global active image shader (all subsequent b2dDrawImage use this shader, shader=0 resets to default).
Takes shader (shader handle from b2dLoadImageShader or 0 for default, integer).
Returns nothing.
Technical Exegesis...
Sets global active image shader (all subsequent b2dDrawImage use this shader, shader=0 resets to default). Takes shader (shader handle from b2dLoadImageShader or 0 for default, integer). Returns nothing. Sets g_2D_activeImageShader (global state affects all subsequent draws), updates g_currentState.
Sets global active image shader (all subsequent b2dDrawImage use this shader, shader=0 resets to default). Takes shader (shader handle from b2dLoadImageShader or 0 for default, integer). Returns nothing. Sets g_2D_activeImageShader (global state affects all subsequent draws), updates g_currentState.imageShader (captured in queued draw commands), applies to b2dDrawImage/AnimImage (without Ex versions, uses global shader), overridden by b2dDrawImageEx (Ex versions ignore global, use per-draw shader parameter). Use for batch shader application (set once, draw multiple images with same shader), shader state management (switch effects for different game states), or default rendering (set to 0 to disable custom shaders). Global shader state: affects all draws (every b2dDrawImage call uses active shader until changed), persists across frames (remains active until b2dSetImageShader called again), captured at queue time (draw commands capture g_currentState.imageShader when queued). Use cases: (1) Batch effect (b2dSetImageShader(glowShader): draw all glowing objects: b2dSetImageShader(0) reset), (2) UI pass (b2dSetImageShader(uiShader): draw all UI elements: b2dSetImageShader(0)), (3) State management (If damagedState Then b2dSetImageShader(flashShader) Else b2dSetImageShader(0)), (4) Layer rendering (b2dSetImageShader(bgShader): draw background layer: b2dSetImageShader(0): draw foreground). Common patterns: activate = b2dSetImageShader(shader) set global; reset = b2dSetImageShader(0) default rendering; per-draw override = b2dDrawImageEx(img,x,y,perDrawShader) ignores global. Shader parameter: shader>0 (uses loaded shader from b2dLoadImageShader, applies custom pixel shader), shader=0 (default rendering, standard alpha blend no custom effects), shader≤0 or not found (falls back to default rendering, no error). Interaction with Ex functions: b2dDrawImage respects global (uses g_currentState.imageShader from this function), b2dDrawImageEx ignores global (uses shader parameter, independent of global state), mix both (set global for most draws, use Ex for exceptions with different shaders). Performance: cost zero (simple global variable assignment, no GPU operations), state change (changing shader may break batching during rendering, PSO switch cost ~0.01ms per change), minimize changes (set shader once for multiple draws, not per-draw if same shader). Validation: no validation (any integer accepted, invalid shaders fall back to default during rendering), safe with freed shaders (if shader freed after set, rendering falls back to default no crash). Related: b2dLoadImageShader loads shader (creates shader set by this function), b2dGetImageShader queries active (reads value set by this function), b2dDrawImage uses global shader (affected by this function), b2dDrawImageEx overrides global (ignores this function, uses per-draw shader), b2dSetImageShaderFloat/etc set parameters (configure shader set by this function).