Usando libpng para "dividir" una imagen en segmentos

Estoy tratando de usar libpng para dividir una imagen en diferentes partes. La razón es que no puedo cargar una textura mayor que 512x512 en el hardware en el que estoy trabajando actualmente. Logré esto antes con una mezcla de SDL y SDL_Image. Básicamente, utilicé el argumento srcrect en SDL_BlitSurface para copiar solo una parte de la imagen que luego convertí en una textura OpenGL. Combine eso con un bucle simple horizontalmente y luego verticalmente, pude obtener una variedad de texturas, cada una con un máximo de 512x512. Entonces solo era cuestión de ponerlos en la posición correcta.

En este momento, no tengo el lujo de usar SDL, así que pensé que es posible hacerlo directamente a través de libpng. Basado en algunas búsquedas en Google, creo que es solo una cuestión de usar png_read_rows para leer qué partes necesito. Pero ahí es donde estoy atrapado, no estoy exactamente seguro de cómo hacerlo.

Además, si se pregunta por qué no divido las imágenes en gimp / photoshop / paint o lo que sea, es porque no las controlo y las descargo en tiempo de ejecución.

Gracias por la ayuda por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta