---
name: dag_uniforms
kind: function
lang: cpp
domain: gfx
version: "1.0.0"
purity: impure
signature: "void dag_uniforms_apply(const std::vector<DagStep>& pipeline, unsigned int program)"
description: "Sube los params del pipeline al shader activo via glUniform4fv. Construye un float[64] con los params de cada DagStep (hasta 16 pasos) y llama glUniform4fv(u_params, 16, data)."
tags: [dag, shader, uniforms, opengl, gfx, pipeline]
uses_functions:
  - gl_loader_cpp_gfx
uses_types:
  - dag_types_cpp_gfx
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [dag_uniforms, gl_loader, dag_types, vector, algorithm, cstring]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/gfx/dag_uniforms.cpp"
params:
  - name: pipeline
    desc: "Vector de DagStep. params[0..3] de cada step se copian en data[i*4..i*4+3]. Steps mas alla de MAX_NODES=16 se ignoran."
  - name: program
    desc: "ID del programa GL activo. Debe haber sido activado con glUseProgram antes de llamar."
output: "Efecto lateral: actualiza el uniform u_params[16] en el programa GL activo para el frame actual."
---

## Notas

El array data[64] se inicializa a 0 antes de copiar, por lo que steps no usados quedan en cero. El caller es responsable de activar el programa antes de llamar.
