return sub_image(level, 0, 0, 0, size.x, size.y, size.z, data);
}
-void Texture3D::sub_image(unsigned level, int x, int y, int z, unsigned wd, unsigned ht, unsigned dp, const void *data)
+void Texture3D::sub_image(unsigned level, unsigned x, unsigned y, unsigned z, unsigned wd, unsigned ht, unsigned dp, const void *data)
{
if(width==0 || height==0 || depth==0)
throw invalid_operation("Texture3D::sub_image");
- if(level>=levels)
+ if(level>=levels || x>width || x+wd>width || y>height || y+ht>height || z>depth || z+dp>depth)
throw out_of_range("Texture3D::sub_image");
Texture3DBackend::sub_image(level, x, y, z, wd, ht, dp, data);