Exemple #1
0
/* 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;
}
Exemple #2
0
/* 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;
}
Exemple #3
0
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;
	}
}