mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
metal: image uploading
This commit is contained in:
@@ -69,7 +69,39 @@ void Image::create(id<MTLDevice> device)
|
||||
if (texture == nil)
|
||||
throw love::Exception("Out of graphics memory.");
|
||||
|
||||
// TODO: upload
|
||||
int mipcount = getMipmapCount();
|
||||
int slicecount = 1;
|
||||
|
||||
if (texType == TEXTURE_VOLUME)
|
||||
slicecount = getDepth();
|
||||
else if (texType == TEXTURE_2D_ARRAY)
|
||||
slicecount = getLayerCount();
|
||||
else if (texType == TEXTURE_CUBE)
|
||||
slicecount = 6;
|
||||
|
||||
if (mipmapsType == MIPMAPS_GENERATED)
|
||||
mipcount = 1;
|
||||
|
||||
int w = pixelWidth;
|
||||
int h = pixelHeight;
|
||||
int d = depth;
|
||||
|
||||
for (int mip = 0; mip < mipcount; mip++)
|
||||
{
|
||||
for (int slice = 0; slice < slicecount; slice++)
|
||||
{
|
||||
love::image::ImageDataBase *imgd = data.get(slice, mip);
|
||||
|
||||
if (imgd != nullptr)
|
||||
uploadImageData(imgd, mip, slice, 0, 0);
|
||||
}
|
||||
|
||||
w = std::max(w / 2, 1);
|
||||
h = std::max(h / 2, 1);
|
||||
|
||||
if (texType == TEXTURE_VOLUME)
|
||||
d = std::max(d / 2, 1);
|
||||
}
|
||||
|
||||
if (mipmapsType == MIPMAPS_GENERATED)
|
||||
generateMipmaps();
|
||||
|
||||
Reference in New Issue
Block a user