Advertisement
Caiwan

renderer.h

Sep 24th, 2012
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.85 KB | None | 0 0
  1. #ifndef _RENDERER_H_
  2. #define _RENDERER_H_
  3.  
  4. // ezt egyelore iderakom, ameddig nem talalok ki jobb jatekot.
  5. #ifndef _USE_OPENGL
  6. #include <GLES2/gl2.h>
  7. #else
  8. #include <GL/GL.h>
  9. #include "../platform/windows/ext.h"
  10. #endif
  11.  
  12. typedef struct{
  13.     int width, height;
  14. } windowMetrices_t;
  15.  
  16. extern void setupRenderer(windowMetrices_t metrices);
  17.  
  18. ///////////////////////////////////////////////////////////////////////////////
  19. // timer
  20. ///////////////////////////////////////////////////////////////////////////////
  21.  
  22. extern float getTime();
  23.  
  24. ///////////////////////////////////////////////////////////////////////////////
  25. // rendering
  26. ///////////////////////////////////////////////////////////////////////////////
  27. extern void clear(float r, float g, float b, float a);
  28.  
  29. // clears every binded state
  30. extern void clearStates();
  31.  
  32. enum blending_e{   
  33.     BLEND_COUTN
  34. };
  35. extern void blending();
  36.  
  37. extern void flush();
  38.  
  39. ///////////////////////////////////////////////////////////////////////////////
  40. // mesh
  41. ///////////////////////////////////////////////////////////////////////////////
  42. enum polygon_drawtype_e{
  43.     DRAW_triangles,
  44.     DRAW_triangleFan,
  45.     DRAW_COUNT
  46. };
  47.  
  48. typedef struct{
  49.     const float *vertices;       int vertices_len;
  50.     const float *normals;        /*int normals_len;*/
  51.     const float *uvs;            /*int uvs_len;*/
  52.     const short int *indices; int indices_len; //in OGLES only _SHORT and _BYTE accepted :(
  53.     enum polygon_drawtype_e drawtype;
  54.     //
  55.     int use_vbo;
  56.     int vertices_id, normals_id, uvs_id, indices_id;
  57. } mesh_t;
  58.  
  59. extern int mesh_build(mesh_t *meshObject);
  60.  
  61. extern void mesh_bind(mesh_t *meshObject);
  62. extern void mesh_draw(mesh_t *meshObject);
  63.  
  64. extern void mesh_unbind(mesh_t *meshObject);
  65. ///////////////////////////////////////////////////////////////////////////////
  66. // shader
  67. // elengedhetetlen resze az ogles2-nek
  68. ///////////////////////////////////////////////////////////////////////////////
  69. enum fixed_uniforms_e{
  70.     UNIFORM_modelView,
  71.     UNIFORM_projection,
  72.     UNIFORM_COUNT
  73. };
  74.  
  75. enum fixed_attribs_e{
  76.     ATTRIB_vertex,
  77.     ATTRIB_texCoord,
  78.     ATTRIB_color,
  79.     ATTRIB_normal,
  80.     ATTRIB_tangent,
  81.     ATTRIB_COUNT
  82. };
  83.  
  84. typedef struct{
  85.     const char *vertex_source, *fragment_source;
  86.     int programID, vertexID, fragmentID;
  87.     int fxed_attrib_id[16];
  88.     int fxed_uniform_id[16];
  89. } shader_t;
  90.  
  91. extern int shader_build(shader_t *shaderObject);
  92.  
  93. extern void shader_bind(shader_t *shaderObject);
  94. extern void shader_unbind(shader_t *shaderObject);
  95.  
  96. extern void shader_uniform_1f  (shader_t *shaderObject, const char* name, float f1);
  97. extern void shader_uniform_2f  (shader_t *shaderObject, const char* name, float f1, float f2);
  98. extern void shader_uniform_3f  (shader_t *shaderObject, const char* name, float f1, float f2, float f3);
  99. extern void shader_uniform_4f  (shader_t *shaderObject, const char* name, float f1, float f2, float f3, float f4);
  100. extern void shader_uniform_1i  (shader_t *shaderObject, const char* name, int i);
  101. extern void shader_uniform_mat3(shader_t *shaderObject, const char* name, float *mat);
  102. extern void shader_uniform_mat4(shader_t *shaderObject, const char* name, float *mat);
  103.  
  104. extern void shader_fixed_attrib(const enum fixed_attribs_e dest, const void* data, const int length, const int elem_length);
  105. //extern void shader_fixed_uniform(fixed_uniforms dest, const void* data, const int length); //lol mi + 9001 overload
  106.  
  107. ///////////////////////////////////////////////////////////////////////////////
  108. // texture
  109. ///////////////////////////////////////////////////////////////////////////////
  110. typedef struct {
  111.     int id;
  112.     int sx, sy, ch;
  113.     void* bitmap;
  114.     int bound_level;
  115. } texture_t;
  116.  
  117. // @return 0 if succeed.
  118. extern int bitmap_create(texture_t *textureObject);
  119. extern int bitmap_load(texture_t *textureObject, const void* data, const unsigned int length, int force_ch);
  120. extern int bitmap_resize(texture_t *textureObject, const unsigned int nx, const unsigned int ny);
  121. extern int bitmap_buildTexture(texture_t *textureObject);
  122.  
  123. extern void bitmap_bindTexture(texture_t *textureObject);
  124. extern void bitmap_bindTexture_level(texture_t *textureObject, int level);
  125. extern void bitmap_unbindTexture(texture_t *textureObject);
  126.  
  127. extern int bitmap_delete(texture_t *textureObject);
  128.  
  129. ///////////////////////////////////////////////////////////////////////////////
  130. // Misc
  131. ///////////////////////////////////////////////////////////////////////////////
  132.  
  133. ///////////////////////////////////////////////////////////////////////////////
  134. // Data for full screen aligned quad
  135. ///////////////////////////////////////////////////////////////////////////////
  136. extern const float *full_screen_quad_vertices;
  137. extern const float *full_screen_quad_uvs;
  138. extern const unsigned short *full_screen_quad_indices;
  139.  
  140. extern const int full_screen_quad_vertices_length;
  141. extern const int full_screen_quad_uvs_length;
  142. extern const int full_screen_quad_indices_length;
  143.  
  144. #endif /*_RENDERER_H_*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement