+// TODO: Properly implement this for both internal format + format
+GLenum Image::format() const {
+ if (CGColorSpaceGetModel(colorSpace) == kCGColorSpaceModelMonochrome) {
+ return GL_DEPTH_COMPONENT;
+ }
+ if (alphaInfo == kCGImageAlphaNone) {
+ return GL_RGB;
+ }
+ return GL_RGBA;
+}
+
+GLint Image::internalFormat() const {
+ switch (format()) {
+ case GL_DEPTH_COMPONENT: return GL_DEPTH_COMPONENT;
+ case GL_RGB: return GL_RGB;
+ default: return GL_RGBA;
+ }
+}
+
+GLenum Image::type() const {
+ bool isFloat = info & kCGBitmapFloatComponents;
+ if (isFloat) return GL_FLOAT;
+ return GL_UNSIGNED_BYTE;
+
+ //TODO:
+ /* switch (bitsPerComponent) { */
+ /* case 1: return GL_UNSIGNED_BYTE; */
+ /* case 16: return GL_UNSIGNED_SHORT; */
+ /* case 24: */
+}
+