/* Return DirectX 10 format for a texture format. */ bool detexGetDX10Parameters(uint32_t texture_format, uint32_t *dx10_format) { const detexTextureFileInfo *info = detexLookupTextureFormatFileInfo(texture_format); if (info == NULL) { detexSetErrorMessage("detexGetDX10Parameters: Invalid texture format"); return false; } if (strncmp(info->dx_four_cc, "DX10", 4) != 0) { detexSetErrorMessage("detexGetDX10Parameters: No DX10 format for texture format"); return false; } *dx10_format = info->dx10_format; return true; }
/* Return OpenGL Texture2D/KTX file parameters for a texture format. */ bool detexGetOpenGLParameters(uint32_t texture_format, int *gl_internal_format, uint32_t *gl_format, uint32_t *gl_type) { const detexTextureFileInfo *info = detexLookupTextureFormatFileInfo(texture_format); if (info == NULL) { detexSetErrorMessage("detexGetOpenGLParameters: Invalid texture format"); return false; } *gl_internal_format = info->gl_internal_format; *gl_format = info->gl_format; *gl_type = info->gl_type; return true; }
bool detexCalculateDynamicRange(uint8_t *pixel_buffer, int nu_pixels, uint32_t pixel_format, float *range_min_out, float *range_max_out) { if (~(pixel_format & DETEX_PIXEL_FORMAT_FLOAT_BIT)) { detexSetErrorMessage("detexCalculateDynamicRange: Pixel buffer not in float format"); return false; } if (pixel_format & DETEX_PIXEL_FORMAT_16BIT_COMPONENT_BIT) { CalculateRangeHalfFloat((uint16_t *)pixel_buffer, nu_pixels * detexGetPixelSize(pixel_format) / 2, range_min_out, range_max_out); return true; } else if (pixel_format & DETEX_PIXEL_FORMAT_32BIT_COMPONENT_BIT) { CalculateRangeFloat((float *)pixel_buffer, nu_pixels * detexGetPixelSize(pixel_format) / 4, range_min_out, range_max_out); return true; } else { detexSetErrorMessage("detexCalculateDynamicRange: Unable to handle pixel buffer format"); return false; } }