adding gfx and ui stuff
This commit is contained in:
102
gfx/render.h
Normal file
102
gfx/render.h
Normal file
@@ -0,0 +1,102 @@
|
||||
#ifndef DJSTDLIB_GFX_RENDER_H
|
||||
#define DJSTDLIB_GFX_RENDER_H
|
||||
|
||||
#include "gfx-common.h"
|
||||
#include "Shader.h"
|
||||
#include "Texture.h"
|
||||
#include "Mesh.h"
|
||||
#include "world/world.h"
|
||||
|
||||
typedef struct RenderObject_BufferInt32 RenderObject_BufferInt32;
|
||||
struct RenderObject_BufferInt32 {
|
||||
IntList buf;
|
||||
uint32 bufId;
|
||||
IntList_underlying underlying;
|
||||
};
|
||||
typedef struct RenderObject_BufferFloat RenderObject_BufferFloat;
|
||||
struct RenderObject_BufferFloat {
|
||||
FloatList buf;
|
||||
uint32 bufId;
|
||||
FloatList_underlying underlying;
|
||||
};
|
||||
typedef struct RenderObject_BufferVec2 RenderObject_BufferVec2;
|
||||
struct RenderObject_BufferVec2 {
|
||||
Vec2List buf;
|
||||
uint32 bufId;
|
||||
Vec2List_underlying underlying;
|
||||
};
|
||||
typedef struct RenderObject_BufferVec4 RenderObject_BufferVec4;
|
||||
struct RenderObject_BufferVec4 {
|
||||
Vec4List buf;
|
||||
uint32 bufId;
|
||||
Vec4List_underlying underlying;
|
||||
};
|
||||
|
||||
|
||||
typedef struct RenderObjects_Rect RenderObjects_Rect;
|
||||
struct RenderObjects_Rect {
|
||||
uint32 vao;
|
||||
uint64 count;
|
||||
RenderObject_BufferVec2 p0;
|
||||
RenderObject_BufferVec2 p1;
|
||||
RenderObject_BufferVec4 color;
|
||||
RenderObject_BufferFloat borderRadius;
|
||||
RenderObject_BufferFloat borderThickness;
|
||||
RenderObject_BufferVec4 borderColor;
|
||||
RenderObject_BufferFloat edgeSoftness;
|
||||
};
|
||||
|
||||
typedef struct RenderObjects_Char RenderObjects_Char;
|
||||
struct RenderObjects_Char {
|
||||
uint32 vao;
|
||||
uint64 count;
|
||||
RenderObject_BufferVec2 begin;
|
||||
RenderObject_BufferInt32 glyph;
|
||||
RenderObject_BufferFloat fontSize;
|
||||
RenderObject_BufferVec4 color;
|
||||
};
|
||||
|
||||
typedef struct GlyphData GlyphData;
|
||||
struct GlyphData {
|
||||
real32 x0;
|
||||
real32 y0;
|
||||
real32 x1;
|
||||
real32 y1;
|
||||
};
|
||||
|
||||
typedef struct Renderer Renderer;
|
||||
struct Renderer {
|
||||
RenderObjects_Rect rects;
|
||||
RenderObjects_Char chars;
|
||||
|
||||
Shader *phongShader;
|
||||
Shader *solidShader;
|
||||
Shader *textShader;
|
||||
|
||||
Font *activeFont;
|
||||
|
||||
int32 width;
|
||||
int32 height;
|
||||
|
||||
int32 sceneWidth;
|
||||
int32 sceneHeight;
|
||||
int32 sceneX;
|
||||
int32 sceneY;
|
||||
|
||||
Scene *scene;
|
||||
Camera *camera;
|
||||
/** SceneGraphNode handle */
|
||||
int32 light;
|
||||
Mesh *cubeMesh;
|
||||
|
||||
int32 testTexId;
|
||||
};
|
||||
|
||||
Renderer createRenderer(Arena *arena, Scene *scene, Camera *cam, int32 light);
|
||||
void renderBegin(Renderer *r);
|
||||
void renderEnd(Renderer *r);
|
||||
void rendererPlaceRectangle(Renderer *r, real32 x, real32 y, real32 width, real32 height, Vec4 color, real32 borderRadius, real32 borderThickness, Vec4 borderColor);
|
||||
void rendererPlaceString(Renderer *r, string s, real32 x, real32 y, Vec4 color, real32 fontSize);
|
||||
#define Render(r) DeferLoop(renderBegin((r)), renderEnd((r)))
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user