Sources/GLTextureDI.h

/*
 Copyright (C) 2015 Apple Inc. All Rights Reserved.
 See LICENSE.txt for this sample’s licensing information
 
 Abstract:
 Utility class for generating a GL texture from an image.
 */
 
#import <OpenGL/OpenGL.h>
 
#import "IOSurface2D.h"
 
@interface GLTextureDI : NSObject
 
// NOTE: Default initializer, sets the properties for representation
//       of 1920x1080 64-bit RGBA texture 2D deep image
 
// Create a texture from a 2D I/O surface using the current CGL context
- (nullable instancetype) initWithSurface:(nonnull IOSurface2D *)surface;
 
// Create a texture from a 2D I/O surface using the CGL context object
- (nullable instancetype) initWithSurface:(nonnull IOSurface2D *)surface
                                  context:(nonnull CGLContextObj)context;
 
// Create a texture from an image
- (nullable instancetype) initWithImage:(nullable NSImage *)image;
 
// Create a texture from an image file located at a URL
- (nullable instancetype) initWithURL:(nullable NSURL *)url;
 
// Create a texture from an image file located at an absolute path
- (nullable instancetype) initWithFile:(nullable NSString *)path;
 
// Create a texture from an image file in application's bundle
- (nullable instancetype) initWithResource:(nullable NSString *)name;
 
// Texture id
@property (nonatomic, readonly) GLuint texture;
 
// Texture internal format
@property (nonatomic, readonly) GLint  internal;
 
// Texture format
@property (nonatomic, readonly) GLenum format;
 
// Texture pixel type
@property (nonatomic, readonly) GLenum type;
 
// Set teture's target type if the texture isn't already
// created by one of the designated initializers
@property (nonatomic) GLenum target;
 
// Set samples-per-pixel if the texture is not already
// created by one of the designated initializers
@property (nonatomic)  size_t  samplesPerPixel;
 
// Set bits-per-component if the texture is not already
// created by one of the designated initializers
@property (nonatomic)  size_t  bitsPerComponent;
 
// Set texture's width if the texture is not already
// created by one of the designated initializers
@property (nonatomic) GLsizei width;
 
// Set texture's height if the texture is not already
// created by one of the designated initializers
@property (nonatomic) GLsizei height;
 
// Bind/unbind texture target
@property (nonatomic) BOOL bind;
 
// Enable/disable texture target
@property (nonatomic) BOOL enable;
 
// Create a new texture if the properties were set and default
// initializer was used to instantiate the object.
- (BOOL) acquire;
- (BOOL) acquire:(nullable const void *)pixels;
 
// Update the texture
- (BOOL) update:(nonnull const void *)pixels;
 
// Update the texture starting at an offset
- (BOOL) update:(nonnull const void *)pixels
          point:(const CGPoint)offset;
 
@end