Once again, GLES doesn't like this, even though the GPU probably does it
internally nevertheless.
internal_format = GL_R32F;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG32F;
internal_format = GL_R32F;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG32F;
+ } else if (pixel_format == FORMAT_RGB) {
+ internal_format = GL_RGB32F;
} else {
internal_format = GL_RGBA32F;
}
} else {
internal_format = GL_RGBA32F;
}
internal_format = GL_R16F;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG16F;
internal_format = GL_R16F;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG16F;
+ } else if (pixel_format == FORMAT_RGB) {
+ internal_format = GL_RGB16F;
} else {
internal_format = GL_RGBA16F;
}
} else {
internal_format = GL_RGBA16F;
}
internal_format = GL_R16;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG16;
internal_format = GL_R16;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG16;
+ } else if (pixel_format == FORMAT_RGB) {
+ internal_format = GL_RGB16;
} else {
internal_format = GL_RGBA16;
}
} else {
internal_format = GL_RGBA16;
}
internal_format = GL_R8;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG8;
internal_format = GL_R8;
} else if (pixel_format == FORMAT_RG) {
internal_format = GL_RG8;
+ } else if (pixel_format == FORMAT_RGB) {
+ internal_format = GL_RGB8;
} else {
internal_format = GL_RGBA8;
}
} else {
internal_format = GL_RGBA8;
}
case GL_SRGB8_ALPHA8:
format = GL_RGBA;
break;
case GL_SRGB8_ALPHA8:
format = GL_RGBA;
break;
+ case GL_RGB32F:
+ case GL_RGB16F:
+ case GL_RGB8:
+ format = GL_RGB;
+ break;
case GL_RG32F:
case GL_RG16F:
case GL_RG32F:
case GL_RG16F:
format = GL_RG;
break;
case GL_R32F:
format = GL_RG;
break;
case GL_R32F:
switch (internal_format) {
case GL_RGBA32F_ARB:
case GL_RGBA16F_ARB:
switch (internal_format) {
case GL_RGBA32F_ARB:
case GL_RGBA16F_ARB:
+ case GL_RGB32F:
+ case GL_RGB16F:
case GL_RG32F:
case GL_RG16F:
case GL_R32F:
case GL_R16F:
type = GL_FLOAT;
break;
case GL_RG32F:
case GL_RG16F:
case GL_R32F:
case GL_R16F:
type = GL_FLOAT;
break;
+ case GL_RGBA8:
+ case GL_RGB8:
+ case GL_RG8:
case GL_R8:
type = GL_UNSIGNED_BYTE;
break;
case GL_R8:
type = GL_UNSIGNED_BYTE;
break;
case GL_RGBA16F_ARB:
bytes_per_pixel = 8;
break;
case GL_RGBA16F_ARB:
bytes_per_pixel = 8;
break;
+ case GL_RGB32F_ARB:
+ bytes_per_pixel = 12;
+ break;
+ case GL_RGB16F_ARB:
+ bytes_per_pixel = 6;
+ break;
case GL_RGBA8:
case GL_SRGB8_ALPHA8:
bytes_per_pixel = 4;
break;
case GL_RGBA8:
case GL_SRGB8_ALPHA8:
bytes_per_pixel = 4;
break;
+ case GL_RGB8:
+ case GL_SRGB8:
+ bytes_per_pixel = 3;
+ break;
case GL_RG32F:
bytes_per_pixel = 8;
break;
case GL_RG32F:
bytes_per_pixel = 8;
break;