Supermodel/Src/Graphics/SuperAA.h

32 lines
884 B
C
Raw Permalink Normal View History

#pragma once
#include "FBO.h"
#include "New3D/GLSLShader.h"
// This class just implements super sampling. Super sampling looks fantastic but is quite expensive.
// 8x and beyond values can start to eat ridiculous amounts of memory / gpu time, for less and less noticable returns
// 4x works and looks great
// values such as 3 are also possible, that works out 9 samples per pixel
// The algorithm is super simple, just add up all samples and divide by the number
class SuperAA
{
public:
SuperAA(int aaValue);
~SuperAA();
void Init(int width, int height); // width & height are real window dimensions
void Draw(); // this is a no-op if AA is 1, since we'll be drawing straight on the back buffer anyway
GLuint GetTargetID();
private:
FBO m_fbo;
GLSLShader m_shader;
const int m_aa;
GLuint m_vao;
int m_width;
int m_height;
};