throw invalid_operation("RenderTargetFormat::operator,");
PixelComponents comp = get_components(f);
- unsigned size = get_component_size(f);
+ DataType type = get_component_type(f);
+ unsigned size = 0;
unsigned char out = outputs[count-1];
if(get_output_type(out)>=get_output_type(RENDER_DEPTH))
{
if(comp!=DEPTH_COMPONENT)
throw invalid_argument("RenderTargetFormat::operator,");
- if(size>1)
- --size;
- if(get_component_type(f)==UNSIGNED_INT)
- --size;
+ switch(type)
+ {
+ case UNSIGNED_SHORT: size = 0; break;
+ case UNSIGNED_INT: size = 2; break;
+ case FLOAT: size = 3; break;
+ default: throw invalid_argument("RenderTargetFormat::operator,");
+ }
}
else
{
if(comp!=RED && comp!=RG && comp!=RGB && comp!=RGBA)
throw invalid_argument("RenderTargetformat::operator,");
- if(size>3)
- --size;
+ switch(type)
+ {
+ case UNSIGNED_BYTE: size = 0; break;
+ case HALF_FLOAT: size = 2; break;
+ case FLOAT: size = 3; break;
+ default: throw invalid_argument("RenderTargetFormat::operator,");
+ }
}
out = (out&~15) | (size<<2) | (get_component_count(f)-1);