mirror of https://github.com/bjornbytes/lovr.git
Font state;
This commit is contained in:
parent
80c9d7f4d8
commit
6077cae95a
|
@ -22,14 +22,6 @@ static void onCloseWindow(GLFWwindow* window) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lovrGraphicsEnsureFont() {
|
|
||||||
if (!state.activeFont && !state.defaultFont) {
|
|
||||||
FontData* fontData = lovrFontDataCreate(NULL, 32);
|
|
||||||
state.defaultFont = lovrFontCreate(fontData);
|
|
||||||
lovrGraphicsSetFont(state.defaultFont);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Base
|
// Base
|
||||||
|
|
||||||
void lovrGraphicsInit() {
|
void lovrGraphicsInit() {
|
||||||
|
@ -70,9 +62,6 @@ void lovrGraphicsInit() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Allocations
|
// Allocations
|
||||||
state.activeFont = NULL;
|
|
||||||
state.defaultFont = NULL;
|
|
||||||
state.activeTexture = NULL;
|
|
||||||
glGenBuffers(1, &state.buffer.vbo);
|
glGenBuffers(1, &state.buffer.vbo);
|
||||||
glGenBuffers(1, &state.buffer.ibo);
|
glGenBuffers(1, &state.buffer.ibo);
|
||||||
glGenVertexArrays(1, &state.buffer.vao);
|
glGenVertexArrays(1, &state.buffer.vao);
|
||||||
|
@ -264,6 +253,28 @@ void lovrGraphicsSetDepthTest(CompareMode depthTest) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Font* lovrGraphicsGetFont() {
|
||||||
|
if (!state.font && !state.defaultFont) {
|
||||||
|
FontData* fontData = lovrFontDataCreate(NULL, 32);
|
||||||
|
state.defaultFont = lovrFontCreate(fontData);
|
||||||
|
lovrGraphicsSetFont(state.defaultFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
return state.font;
|
||||||
|
}
|
||||||
|
|
||||||
|
void lovrGraphicsSetFont(Font* font) {
|
||||||
|
if (state.font) {
|
||||||
|
lovrRelease(&state.font->ref);
|
||||||
|
}
|
||||||
|
|
||||||
|
state.font = font;
|
||||||
|
|
||||||
|
if (font) {
|
||||||
|
lovrRetain(&state.font->ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GraphicsLimits lovrGraphicsGetLimits() {
|
GraphicsLimits lovrGraphicsGetLimits() {
|
||||||
if (!state.limits.initialized) {
|
if (!state.limits.initialized) {
|
||||||
glGetFloatv(GL_POINT_SIZE_RANGE, state.limits.pointSizes);
|
glGetFloatv(GL_POINT_SIZE_RANGE, state.limits.pointSizes);
|
||||||
|
@ -338,23 +349,6 @@ void lovrGraphicsSetWireframe(int wireframe) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Font* lovrGraphicsGetFont() {
|
|
||||||
lovrGraphicsEnsureFont();
|
|
||||||
return state.activeFont;
|
|
||||||
}
|
|
||||||
|
|
||||||
void lovrGraphicsSetFont(Font* font) {
|
|
||||||
if (state.activeFont) {
|
|
||||||
lovrRelease(&state.activeFont->ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
state.activeFont = font;
|
|
||||||
|
|
||||||
if (font) {
|
|
||||||
lovrRetain(&state.activeFont->ref);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Texture* lovrGraphicsGetTexture() {
|
Texture* lovrGraphicsGetTexture() {
|
||||||
return state.activeTexture;
|
return state.activeTexture;
|
||||||
}
|
}
|
||||||
|
@ -969,8 +963,7 @@ void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAl
|
||||||
lovrGraphicsSetShader(state.fontShader);
|
lovrGraphicsSetShader(state.fontShader);
|
||||||
}
|
}
|
||||||
|
|
||||||
lovrGraphicsEnsureFont();
|
Font* font = lovrGraphicsGetFont();
|
||||||
Font* font = state.activeFont;
|
|
||||||
float scale = 1 / font->pixelDensity;
|
float scale = 1 / font->pixelDensity;
|
||||||
float offsety;
|
float offsety;
|
||||||
lovrFontRender(font, str, wrap, halign, valign, &state.buffer.data, &offsety);
|
lovrFontRender(font, str, wrap, halign, valign, &state.buffer.data, &offsety);
|
||||||
|
|
|
@ -69,7 +69,6 @@ typedef struct {
|
||||||
Shader* skyboxShader;
|
Shader* skyboxShader;
|
||||||
Shader* fontShader;
|
Shader* fontShader;
|
||||||
Shader* fullscreenShader;
|
Shader* fullscreenShader;
|
||||||
Font* activeFont;
|
|
||||||
Font* defaultFont;
|
Font* defaultFont;
|
||||||
Texture* activeTexture;
|
Texture* activeTexture;
|
||||||
Texture* defaultTexture;
|
Texture* defaultTexture;
|
||||||
|
@ -93,6 +92,7 @@ typedef struct {
|
||||||
int culling;
|
int culling;
|
||||||
TextureFilter defaultFilter;
|
TextureFilter defaultFilter;
|
||||||
CompareMode depthTest;
|
CompareMode depthTest;
|
||||||
|
Font* font;
|
||||||
GraphicsLimits limits;
|
GraphicsLimits limits;
|
||||||
float lineWidth;
|
float lineWidth;
|
||||||
float pointSize;
|
float pointSize;
|
||||||
|
@ -122,19 +122,19 @@ TextureFilter lovrGraphicsGetDefaultFilter();
|
||||||
void lovrGraphicsSetDefaultFilter(TextureFilter filter);
|
void lovrGraphicsSetDefaultFilter(TextureFilter filter);
|
||||||
CompareMode lovrGraphicsGetDepthTest();
|
CompareMode lovrGraphicsGetDepthTest();
|
||||||
void lovrGraphicsSetDepthTest(CompareMode depthTest);
|
void lovrGraphicsSetDepthTest(CompareMode depthTest);
|
||||||
|
Font* lovrGraphicsGetFont();
|
||||||
|
void lovrGraphicsSetFont(Font* font);
|
||||||
GraphicsLimits lovrGraphicsGetLimits();
|
GraphicsLimits lovrGraphicsGetLimits();
|
||||||
float lovrGraphicsGetLineWidth();
|
float lovrGraphicsGetLineWidth();
|
||||||
void lovrGraphicsSetLineWidth(float width);
|
void lovrGraphicsSetLineWidth(float width);
|
||||||
float lovrGraphicsGetPointSize();
|
float lovrGraphicsGetPointSize();
|
||||||
void lovrGraphicsSetPointSize(float size);
|
void lovrGraphicsSetPointSize(float size);
|
||||||
|
Shader* lovrGraphicsGetShader();
|
||||||
|
void lovrGraphicsSetShader(Shader* shader);
|
||||||
Winding lovrGraphicsGetWinding();
|
Winding lovrGraphicsGetWinding();
|
||||||
void lovrGraphicsSetWinding(Winding winding);
|
void lovrGraphicsSetWinding(Winding winding);
|
||||||
int lovrGraphicsIsWireframe();
|
int lovrGraphicsIsWireframe();
|
||||||
void lovrGraphicsSetWireframe(int wireframe);
|
void lovrGraphicsSetWireframe(int wireframe);
|
||||||
Shader* lovrGraphicsGetShader();
|
|
||||||
void lovrGraphicsSetShader(Shader* shader);
|
|
||||||
Font* lovrGraphicsGetFont();
|
|
||||||
void lovrGraphicsSetFont(Font* font);
|
|
||||||
Texture* lovrGraphicsGetTexture();
|
Texture* lovrGraphicsGetTexture();
|
||||||
void lovrGraphicsBindTexture(Texture* texture);
|
void lovrGraphicsBindTexture(Texture* texture);
|
||||||
mat4 lovrGraphicsGetProjection();
|
mat4 lovrGraphicsGetProjection();
|
||||||
|
|
Loading…
Reference in New Issue