1 #ifndef MYTHRENDER_OPENGL_H_
2 #define MYTHRENDER_OPENGL_H_
11 #define GL_GLEXT_PROTOTYPES
14 #define GLX_GLXEXT_PROTOTYPES
16 #ifndef GL_ES_VERSION_2_0
19 #undef GLX_ARB_get_proc_address
57 #define MYTHTV_UYVY 0x8A1F
107 QPaintDevice* device = NULL);
113 virtual void makeCurrent();
114 virtual void doneCurrent();
122 bool IsRecommendedRenderer(
void);
124 void MoveResizeWindow(
const QRect &rect);
125 void SetViewPort(
const QRect &rect,
bool viewportonly =
false);
127 virtual void PushTransformation(
const UIEffects &fx, QPointF ¢er) = 0;
128 virtual void PopTransformation(
void) = 0;
129 void Flush(
bool use_fence);
130 void SetBlend(
bool enable);
132 void SetBackground(
int r,
int g,
int b,
int a);
135 void* GetTextureBuffer(
uint tex,
bool create_buffer =
true);
136 void UpdateTexture(
uint tex,
void *
buf);
137 int GetTextureType(
bool &rect);
139 uint CreateTexture(QSize act_size,
bool use_pbo,
uint type,
140 uint data_type = GL_UNSIGNED_BYTE,
141 uint data_fmt = GL_BGRA,
uint internal_fmt = GL_RGBA8,
142 uint filter = GL_LINEAR,
uint wrap = GL_CLAMP_TO_EDGE);
144 QSize GetTextureSize(
uint tex);
145 int GetTextureDataSize(
uint tex);
147 void ActiveTexture(
int active_tex);
150 void DisableTextures(
void);
151 void DeleteTexture(
uint tex);
153 bool CreateFrameBuffer(
uint &fb,
uint tex);
154 void DeleteFrameBuffer(
uint fb);
155 void BindFramebuffer(
uint fb);
156 void ClearFramebuffer(
void);
158 virtual uint CreateShaderObject(
const QString &vert,
const QString &frag) = 0;
159 virtual void DeleteShaderObject(
uint obj) = 0;
160 virtual void EnableShaderObject(
uint obj) = 0;
161 virtual void SetShaderParams(
uint prog,
void*
vals,
const char* uniform) = 0;
163 void DrawBitmap(
uint tex,
uint target,
const QRect *
src,
164 const QRect *
dst,
uint prog,
int alpha = 255,
165 int red = 255,
int green = 255,
int blue = 255);
166 void DrawBitmap(
uint *textures,
uint texture_count,
uint target,
167 const QRectF *
src,
const QRectF *
dst,
uint prog);
168 void DrawRect(
const QRect &area,
const QBrush &fillBrush,
169 const QPen &linePen,
int alpha);
170 void DrawRoundRect(
const QRect &area,
int cornerRadius,
171 const QBrush &fillBrush,
const QPen &linePen,
177 virtual void DrawBitmapPriv(
uint tex,
const QRect *
src,
const QRect *
dst,
178 uint prog,
int alpha,
179 int red,
int green,
int blue) = 0;
180 virtual void DrawBitmapPriv(
uint *textures,
uint texture_count,
181 const QRectF *
src,
const QRectF *
dst,
183 virtual void DrawRectPriv(
const QRect &area,
const QBrush &fillBrush,
184 const QPen &linePen,
int alpha) = 0;
185 virtual void DrawRoundRectPriv(
const QRect &area,
int cornerRadius,
186 const QBrush &fillBrush,
const QPen &linePen,
189 virtual void Init2DState(
void);
190 virtual void InitProcs(
void);
191 void* GetProcAddress(
const QString &proc)
const;
192 virtual bool InitFeatures(
void);
193 virtual void ResetVars(
void);
194 virtual void ResetProcs(
void);
195 virtual void SetMatrixView(
void) = 0;
198 uint CreateVBO(
void);
199 virtual void DeleteOpenGLResources(
void);
200 void DeleteTextures(
void);
201 virtual void DeleteShaders(
void) = 0;
202 void DeleteFrameBuffers(
void);
204 bool UpdateTextureVertices(
uint tex,
const QRect *
src,
const QRect *
dst);
205 bool UpdateTextureVertices(
uint tex,
const QRectF *
src,
const QRectF *
dst);
206 GLfloat* GetCachedVertices(GLuint
type,
const QRect &area);
207 void ExpireVertices(
uint max = 0);
208 void GetCachedVBO(GLuint
type,
const QRect &area);
209 void ExpireVBOS(
uint max = 0);
210 bool ClearTexture(
uint tex);
213 static void StoreBicubicWeights(
float x,
float *
dst);