Apply textures dynamically to portions of a primitive

I’d like to have a plane function as a grid of differently colored squares that can change color at any time.

What I’d like to know is, if I have a 10x10 grid containing 100 1x1 squares, is there a way I can say, “okay, color the square whose lower-left vertex is at (5, 0, 5) green (by applying some green texture)”?

I’ve considered that I could always just make 100 1x1 planes, instead, but that obviously gives me 100 times the draw calls.

Just for clarification, I have no problems procedurally generating the planes I need, I just need to figure out how to apply textures in certain spots (if that’s at all possible).

not tested

int xMin = 10;
int yMin = 10;
int xMax = 19;
int yMax = 19;
Color col =;

Texture2D texture = Instantiate(renderer.material.mainTexture);
renderer.material.mainTexture = texture;
int pixels = (xMax - xMin + 1) * (yMax - yin + 1);
Color[] colors = new colors[pixels];
for (int i = 0; i < pixels; i++)
  colors *= col;*
*texture.SetPixels(xMin, yMin, xMax - xMin + 1, yMax - yMin + 1, colors);*