#include "error.h"
#include "frameformat.h"
-#include "gl.h"
using namespace std;
}
else
{
- if(comp!=RED && comp!=RG && comp!=RGB && comp!=RGBA)
+ if(comp!=RED && comp!=RG && comp!=RGB && comp!=RGBA && comp!=BGR && comp!=BGRA)
+ throw invalid_argument("make_typed_attachment");
+ if(get_required_swizzle(comp))
throw invalid_argument("make_typed_attachment");
}
DataType type = get_component_type(pf);
- return static_cast<FrameAttachment>((fa&0xFC00) | (is_float(type)*0x100) | get_type_size(type)<<4 | get_component_count(comp));
+ return static_cast<FrameAttachment>((fa&0xFC00) | (is_float(type)*0x100) | get_type_size(type)<<4 | ((comp&0x20)>>2) | get_component_count(comp));
}
FrameAttachment make_indexed_attachment(FrameAttachment fa, unsigned i)
else if(get_attach_point(fa)==get_attach_point(STENCIL_ATTACHMENT))
comp = STENCIL_INDEX;
else
- comp = static_cast<PixelComponents>(fa&7);
+ comp = static_cast<PixelComponents>((fa&7) | (fa&8)<<2);
DataType type;
if(fa&0x100)