this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 327 lines 15 kB view raw
1#ifndef _GPU_RENDERERIMPL_H__ 2#define _GPU_RENDERERIMPL_H__ 3 4#include "SDL_gpu.h" 5 6#ifdef __cplusplus 7extern "C" { 8#endif 9 10// Internal API for managing window mappings 11DECLSPEC void SDLCALL GPU_AddWindowMapping(GPU_Target* target); 12DECLSPEC void SDLCALL GPU_RemoveWindowMapping(Uint32 windowID); 13DECLSPEC void SDLCALL GPU_RemoveWindowMappingByTarget(GPU_Target* target); 14 15/*! Private implementation of renderer members. */ 16typedef struct GPU_RendererImpl 17{ 18 /*! \see GPU_Init() 19 * \see GPU_InitRenderer() 20 * \see GPU_InitRendererByID() 21 */ 22 GPU_Target* (SDLCALL *Init)(GPU_Renderer* renderer, GPU_RendererID renderer_request, Uint16 w, Uint16 h, GPU_WindowFlagEnum SDL_flags); 23 24 /*! \see GPU_CreateTargetFromWindow 25 * The extra parameter is used internally to reuse/reinit a target. */ 26 GPU_Target* (SDLCALL *CreateTargetFromWindow)(GPU_Renderer* renderer, Uint32 windowID, GPU_Target* target); 27 28 /*! \see GPU_SetActiveTarget() */ 29 GPU_bool (SDLCALL *SetActiveTarget)(GPU_Renderer* renderer, GPU_Target* target); 30 31 /*! \see GPU_CreateAliasTarget() */ 32 GPU_Target* (SDLCALL *CreateAliasTarget)(GPU_Renderer* renderer, GPU_Target* target); 33 34 /*! \see GPU_MakeCurrent */ 35 void (SDLCALL *MakeCurrent)(GPU_Renderer* renderer, GPU_Target* target, Uint32 windowID); 36 37 /*! Sets up this renderer to act as the current renderer. Called automatically by GPU_SetCurrentRenderer(). */ 38 void (SDLCALL *SetAsCurrent)(GPU_Renderer* renderer); 39 40 /*! \see GPU_ResetRendererState() */ 41 void (SDLCALL *ResetRendererState)(GPU_Renderer* renderer); 42 43 /*! \see GPU_AddDepthBuffer() */ 44 GPU_bool (SDLCALL *AddDepthBuffer)(GPU_Renderer* renderer, GPU_Target* target); 45 46 /*! \see GPU_SetWindowResolution() */ 47 GPU_bool (SDLCALL *SetWindowResolution)(GPU_Renderer* renderer, Uint16 w, Uint16 h); 48 49 /*! \see GPU_SetVirtualResolution() */ 50 void (SDLCALL *SetVirtualResolution)(GPU_Renderer* renderer, GPU_Target* target, Uint16 w, Uint16 h); 51 52 /*! \see GPU_UnsetVirtualResolution() */ 53 void (SDLCALL *UnsetVirtualResolution)(GPU_Renderer* renderer, GPU_Target* target); 54 55 /*! Clean up the renderer state. */ 56 void (SDLCALL *Quit)(GPU_Renderer* renderer); 57 58 /*! \see GPU_SetFullscreen() */ 59 GPU_bool (SDLCALL *SetFullscreen)(GPU_Renderer* renderer, GPU_bool enable_fullscreen, GPU_bool use_desktop_resolution); 60 61 /*! \see GPU_SetCamera() */ 62 GPU_Camera (SDLCALL *SetCamera)(GPU_Renderer* renderer, GPU_Target* target, GPU_Camera* cam); 63 64 /*! \see GPU_CreateImage() */ 65 GPU_Image* (SDLCALL *CreateImage)(GPU_Renderer* renderer, Uint16 w, Uint16 h, GPU_FormatEnum format); 66 67 /*! \see GPU_CreateImageUsingTexture() */ 68 GPU_Image* (SDLCALL *CreateImageUsingTexture)(GPU_Renderer* renderer, GPU_TextureHandle handle, GPU_bool take_ownership); 69 70 /*! \see GPU_CreateAliasImage() */ 71 GPU_Image* (SDLCALL *CreateAliasImage)(GPU_Renderer* renderer, GPU_Image* image); 72 73 /*! \see GPU_SaveImage() */ 74 GPU_bool (SDLCALL *SaveImage)(GPU_Renderer* renderer, GPU_Image* image, const char* filename, GPU_FileFormatEnum format); 75 76 /*! \see GPU_CopyImage() */ 77 GPU_Image* (SDLCALL *CopyImage)(GPU_Renderer* renderer, GPU_Image* image); 78 79 /*! \see GPU_UpdateImage */ 80 void (SDLCALL *UpdateImage)(GPU_Renderer* renderer, GPU_Image* image, const GPU_Rect* image_rect, SDL_Surface* surface, const GPU_Rect* surface_rect); 81 82 /*! \see GPU_UpdateImageBytes */ 83 void (SDLCALL *UpdateImageBytes)(GPU_Renderer* renderer, GPU_Image* image, const GPU_Rect* image_rect, const unsigned char* bytes, int bytes_per_row); 84 85 /*! \see GPU_ReplaceImage */ 86 GPU_bool (SDLCALL *ReplaceImage)(GPU_Renderer* renderer, GPU_Image* image, SDL_Surface* surface, const GPU_Rect* surface_rect); 87 88 /*! \see GPU_CopyImageFromSurface() */ 89 GPU_Image* (SDLCALL *CopyImageFromSurface)(GPU_Renderer* renderer, SDL_Surface* surface, GPU_Rect *surface_rect); 90 91 /*! \see GPU_CopyImageFromTarget() */ 92 GPU_Image* (SDLCALL *CopyImageFromTarget)(GPU_Renderer* renderer, GPU_Target* target); 93 94 /*! \see GPU_CopySurfaceFromTarget() */ 95 SDL_Surface* (SDLCALL *CopySurfaceFromTarget)(GPU_Renderer* renderer, GPU_Target* target); 96 97 /*! \see GPU_CopySurfaceFromImage() */ 98 SDL_Surface* (SDLCALL *CopySurfaceFromImage)(GPU_Renderer* renderer, GPU_Image* image); 99 100 /*! \see GPU_FreeImage() */ 101 void (SDLCALL *FreeImage)(GPU_Renderer* renderer, GPU_Image* image); 102 103 /*! \see GPU_GetTarget() */ 104 GPU_Target* (SDLCALL *GetTarget)(GPU_Renderer* renderer, GPU_Image* image); 105 106 /*! \see GPU_FreeTarget() */ 107 void (SDLCALL *FreeTarget)(GPU_Renderer* renderer, GPU_Target* target); 108 109 /*! \see GPU_Blit() */ 110 void (SDLCALL *Blit)(GPU_Renderer* renderer, GPU_Image* image, GPU_Rect* src_rect, GPU_Target* target, float x, float y); 111 112 /*! \see GPU_BlitRotate() */ 113 void (SDLCALL *BlitRotate)(GPU_Renderer* renderer, GPU_Image* image, GPU_Rect* src_rect, GPU_Target* target, float x, float y, float degrees); 114 115 /*! \see GPU_BlitScale() */ 116 void (SDLCALL *BlitScale)(GPU_Renderer* renderer, GPU_Image* image, GPU_Rect* src_rect, GPU_Target* target, float x, float y, float scaleX, float scaleY); 117 118 /*! \see GPU_BlitTransform */ 119 void (SDLCALL *BlitTransform)(GPU_Renderer* renderer, GPU_Image* image, GPU_Rect* src_rect, GPU_Target* target, float x, float y, float degrees, float scaleX, float scaleY); 120 121 /*! \see GPU_BlitTransformX() */ 122 void (SDLCALL *BlitTransformX)(GPU_Renderer* renderer, GPU_Image* image, GPU_Rect* src_rect, GPU_Target* target, float x, float y, float pivot_x, float pivot_y, float degrees, float scaleX, float scaleY); 123 124 /*! \see GPU_PrimitiveBatchV() */ 125 void (SDLCALL *PrimitiveBatchV)(GPU_Renderer* renderer, GPU_Image* image, GPU_Target* target, GPU_PrimitiveEnum primitive_type, unsigned short num_vertices, void* values, unsigned int num_indices, unsigned short* indices, GPU_BatchFlagEnum flags); 126 127 /*! \see GPU_GenerateMipmaps() */ 128 void (SDLCALL *GenerateMipmaps)(GPU_Renderer* renderer, GPU_Image* image); 129 130 /*! \see GPU_SetClip() */ 131 GPU_Rect (SDLCALL *SetClip)(GPU_Renderer* renderer, GPU_Target* target, Sint16 x, Sint16 y, Uint16 w, Uint16 h); 132 133 /*! \see GPU_UnsetClip() */ 134 void (SDLCALL *UnsetClip)(GPU_Renderer* renderer, GPU_Target* target); 135 136 /*! \see GPU_GetPixel() */ 137 SDL_Color (SDLCALL *GetPixel)(GPU_Renderer* renderer, GPU_Target* target, Sint16 x, Sint16 y); 138 139 /*! \see GPU_SetImageFilter() */ 140 void (SDLCALL *SetImageFilter)(GPU_Renderer* renderer, GPU_Image* image, GPU_FilterEnum filter); 141 142 /*! \see GPU_SetWrapMode() */ 143 void (SDLCALL *SetWrapMode)(GPU_Renderer* renderer, GPU_Image* image, GPU_WrapEnum wrap_mode_x, GPU_WrapEnum wrap_mode_y); 144 145 /*! \see GPU_GetTextureHandle() */ 146 GPU_TextureHandle (SDLCALL *GetTextureHandle)(GPU_Renderer* renderer, GPU_Image* image); 147 148 /*! \see GPU_ClearRGBA() */ 149 void (SDLCALL *ClearRGBA)(GPU_Renderer* renderer, GPU_Target* target, Uint8 r, Uint8 g, Uint8 b, Uint8 a); 150 /*! \see GPU_FlushBlitBuffer() */ 151 void (SDLCALL *FlushBlitBuffer)(GPU_Renderer* renderer); 152 /*! \see GPU_Flip() */ 153 void (SDLCALL *Flip)(GPU_Renderer* renderer, GPU_Target* target); 154 155 156 /*! \see GPU_CreateShaderProgram() */ 157 Uint32 (SDLCALL *CreateShaderProgram)(GPU_Renderer* renderer); 158 159 /*! \see GPU_FreeShaderProgram() */ 160 void (SDLCALL *FreeShaderProgram)(GPU_Renderer* renderer, Uint32 program_object); 161 162 /*! \see GPU_CompileShader_RW() */ 163 Uint32 (SDLCALL *CompileShader_RW)(GPU_Renderer* renderer, GPU_ShaderEnum shader_type, SDL_RWops* shader_source, GPU_bool free_rwops); 164 165 /*! \see GPU_CompileShader() */ 166 Uint32 (SDLCALL *CompileShader)(GPU_Renderer* renderer, GPU_ShaderEnum shader_type, const char* shader_source); 167 168 /*! \see GPU_FreeShader() */ 169 void (SDLCALL *FreeShader)(GPU_Renderer* renderer, Uint32 shader_object); 170 171 /*! \see GPU_AttachShader() */ 172 void (SDLCALL *AttachShader)(GPU_Renderer* renderer, Uint32 program_object, Uint32 shader_object); 173 174 /*! \see GPU_DetachShader() */ 175 void (SDLCALL *DetachShader)(GPU_Renderer* renderer, Uint32 program_object, Uint32 shader_object); 176 177 /*! \see GPU_LinkShaderProgram() */ 178 GPU_bool (SDLCALL *LinkShaderProgram)(GPU_Renderer* renderer, Uint32 program_object); 179 180 /*! \see GPU_ActivateShaderProgram() */ 181 void (SDLCALL *ActivateShaderProgram)(GPU_Renderer* renderer, Uint32 program_object, GPU_ShaderBlock* block); 182 183 /*! \see GPU_DeactivateShaderProgram() */ 184 void (SDLCALL *DeactivateShaderProgram)(GPU_Renderer* renderer); 185 186 /*! \see GPU_GetShaderMessage() */ 187 const char* (SDLCALL *GetShaderMessage)(GPU_Renderer* renderer); 188 189 /*! \see GPU_GetAttribLocation() */ 190 int (SDLCALL *GetAttributeLocation)(GPU_Renderer* renderer, Uint32 program_object, const char* attrib_name); 191 192 /*! \see GPU_GetUniformLocation() */ 193 int (SDLCALL *GetUniformLocation)(GPU_Renderer* renderer, Uint32 program_object, const char* uniform_name); 194 195 /*! \see GPU_LoadShaderBlock() */ 196 GPU_ShaderBlock (SDLCALL *LoadShaderBlock)(GPU_Renderer* renderer, Uint32 program_object, const char* position_name, const char* texcoord_name, const char* color_name, const char* modelViewMatrix_name); 197 198 /*! \see GPU_SetShaderBlock() */ 199 void (SDLCALL *SetShaderBlock)(GPU_Renderer* renderer, GPU_ShaderBlock block); 200 201 /*! \see GPU_SetShaderImage() */ 202 void (SDLCALL *SetShaderImage)(GPU_Renderer* renderer, GPU_Image* image, int location, int image_unit); 203 204 /*! \see GPU_GetUniformiv() */ 205 void (SDLCALL *GetUniformiv)(GPU_Renderer* renderer, Uint32 program_object, int location, int* values); 206 207 /*! \see GPU_SetUniformi() */ 208 void (SDLCALL *SetUniformi)(GPU_Renderer* renderer, int location, int value); 209 210 /*! \see GPU_SetUniformiv() */ 211 void (SDLCALL *SetUniformiv)(GPU_Renderer* renderer, int location, int num_elements_per_value, int num_values, int* values); 212 213 /*! \see GPU_GetUniformuiv() */ 214 void (SDLCALL *GetUniformuiv)(GPU_Renderer* renderer, Uint32 program_object, int location, unsigned int* values); 215 216 /*! \see GPU_SetUniformui() */ 217 void (SDLCALL *SetUniformui)(GPU_Renderer* renderer, int location, unsigned int value); 218 219 /*! \see GPU_SetUniformuiv() */ 220 void (SDLCALL *SetUniformuiv)(GPU_Renderer* renderer, int location, int num_elements_per_value, int num_values, unsigned int* values); 221 222 /*! \see GPU_GetUniformfv() */ 223 void (SDLCALL *GetUniformfv)(GPU_Renderer* renderer, Uint32 program_object, int location, float* values); 224 225 /*! \see GPU_SetUniformf() */ 226 void (SDLCALL *SetUniformf)(GPU_Renderer* renderer, int location, float value); 227 228 /*! \see GPU_SetUniformfv() */ 229 void (SDLCALL *SetUniformfv)(GPU_Renderer* renderer, int location, int num_elements_per_value, int num_values, float* values); 230 231 /*! \see GPU_SetUniformMatrixfv() */ 232 void (SDLCALL *SetUniformMatrixfv)(GPU_Renderer* renderer, int location, int num_matrices, int num_rows, int num_columns, GPU_bool transpose, float* values); 233 234 /*! \see GPU_SetAttributef() */ 235 void (SDLCALL *SetAttributef)(GPU_Renderer* renderer, int location, float value); 236 237 /*! \see GPU_SetAttributei() */ 238 void (SDLCALL *SetAttributei)(GPU_Renderer* renderer, int location, int value); 239 240 /*! \see GPU_SetAttributeui() */ 241 void (SDLCALL *SetAttributeui)(GPU_Renderer* renderer, int location, unsigned int value); 242 243 /*! \see GPU_SetAttributefv() */ 244 void (SDLCALL *SetAttributefv)(GPU_Renderer* renderer, int location, int num_elements, float* value); 245 246 /*! \see GPU_SetAttributeiv() */ 247 void (SDLCALL *SetAttributeiv)(GPU_Renderer* renderer, int location, int num_elements, int* value); 248 249 /*! \see GPU_SetAttributeuiv() */ 250 void (SDLCALL *SetAttributeuiv)(GPU_Renderer* renderer, int location, int num_elements, unsigned int* value); 251 252 /*! \see GPU_SetAttributeSource() */ 253 void (SDLCALL *SetAttributeSource)(GPU_Renderer* renderer, int num_values, GPU_Attribute source); 254 255 256 // Shapes 257 258 /*! \see GPU_SetLineThickness() */ 259 float (SDLCALL *SetLineThickness)(GPU_Renderer* renderer, float thickness); 260 261 /*! \see GPU_GetLineThickness() */ 262 float (SDLCALL *GetLineThickness)(GPU_Renderer* renderer); 263 264 /*! \see GPU_Pixel() */ 265 void (SDLCALL *Pixel)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, SDL_Color color); 266 267 /*! \see GPU_Line() */ 268 void (SDLCALL *Line)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, SDL_Color color); 269 270 /*! \see GPU_Arc() */ 271 void (SDLCALL *Arc)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float radius, float start_angle, float end_angle, SDL_Color color); 272 273 /*! \see GPU_ArcFilled() */ 274 void (SDLCALL *ArcFilled)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float radius, float start_angle, float end_angle, SDL_Color color); 275 276 /*! \see GPU_Circle() */ 277 void (SDLCALL *Circle)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float radius, SDL_Color color); 278 279 /*! \see GPU_CircleFilled() */ 280 void (SDLCALL *CircleFilled)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float radius, SDL_Color color); 281 282 /*! \see GPU_Ellipse() */ 283 void (SDLCALL *Ellipse)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float rx, float ry, float degrees, SDL_Color color); 284 285 /*! \see GPU_EllipseFilled() */ 286 void (SDLCALL *EllipseFilled)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float rx, float ry, float degrees, SDL_Color color); 287 288 /*! \see GPU_Sector() */ 289 void (SDLCALL *Sector)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float inner_radius, float outer_radius, float start_angle, float end_angle, SDL_Color color); 290 291 /*! \see GPU_SectorFilled() */ 292 void (SDLCALL *SectorFilled)(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float inner_radius, float outer_radius, float start_angle, float end_angle, SDL_Color color); 293 294 /*! \see GPU_Tri() */ 295 void (SDLCALL *Tri)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, float x3, float y3, SDL_Color color); 296 297 /*! \see GPU_TriFilled() */ 298 void (SDLCALL *TriFilled)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, float x3, float y3, SDL_Color color); 299 300 /*! \see GPU_Rectangle() */ 301 void (SDLCALL *Rectangle)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, SDL_Color color); 302 303 /*! \see GPU_RectangleFilled() */ 304 void (SDLCALL *RectangleFilled)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, SDL_Color color); 305 306 /*! \see GPU_RectangleRound() */ 307 void (SDLCALL *RectangleRound)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, float radius, SDL_Color color); 308 309 /*! \see GPU_RectangleRoundFilled() */ 310 void (SDLCALL *RectangleRoundFilled)(GPU_Renderer* renderer, GPU_Target* target, float x1, float y1, float x2, float y2, float radius, SDL_Color color); 311 312 /*! \see GPU_Polygon() */ 313 void (SDLCALL *Polygon)(GPU_Renderer* renderer, GPU_Target* target, unsigned int num_vertices, float* vertices, SDL_Color color); 314 315 /*! \see GPU_Polyline() */ 316 void (SDLCALL *Polyline)(GPU_Renderer* renderer, GPU_Target* target, unsigned int num_vertices, float* vertices, SDL_Color color, GPU_bool close_loop); 317 318 /*! \see GPU_PolygonFilled() */ 319 void (SDLCALL *PolygonFilled)(GPU_Renderer* renderer, GPU_Target* target, unsigned int num_vertices, float* vertices, SDL_Color color); 320 321} GPU_RendererImpl; 322 323#ifdef __cplusplus 324} 325#endif 326 327#endif