get all the commands to work
This commit is contained in:
33
projects/apis/metal/src/texture/metal_texture.m
Normal file
33
projects/apis/metal/src/texture/metal_texture.m
Normal file
@@ -0,0 +1,33 @@
|
||||
#include "metal_texture.h"
|
||||
#include "surface/metal_surface.h"
|
||||
#include "devices/metal_output_devices.h"
|
||||
|
||||
gnReturnCode createMetalTexture(gnTexture texture, gnDevice device, const gnTextureInfo info) {
|
||||
texture->texture = malloc(sizeof(struct gnPlatformTexture_t));
|
||||
MTLTextureDescriptor *textureDescriptor = [[MTLTextureDescriptor alloc] init];
|
||||
textureDescriptor.pixelFormat = mtlGryphnFormatToMetalFormat(info.format);
|
||||
textureDescriptor.width = info.width;
|
||||
textureDescriptor.height = info.height;
|
||||
texture->texture->texture = [device->outputDevice->device newTextureWithDescriptor:textureDescriptor];
|
||||
[textureDescriptor release];
|
||||
return GN_SUCCESS;
|
||||
}
|
||||
|
||||
void metalTextureData(gnTextureHandle texture, void* pixelData) {
|
||||
MTLRegion region = {
|
||||
{ 0, 0, 0 },
|
||||
{texture->info.width, texture->info.height, 1}
|
||||
};
|
||||
|
||||
NSUInteger bytesPerRow = 4 * texture->info.width; // TODO: fix this should not be set to 4
|
||||
[texture->texture->texture replaceRegion:region
|
||||
mipmapLevel:0
|
||||
withBytes:pixelData
|
||||
bytesPerRow:bytesPerRow];
|
||||
|
||||
}
|
||||
|
||||
void metalDestroyTexture(gnTexture texture) {
|
||||
[texture->texture->texture release];
|
||||
free(texture->texture);
|
||||
}
|
Reference in New Issue
Block a user