mirror of https://github.com/bjornbytes/lovr.git
Clean up system limits;
This commit is contained in:
parent
fd176a608a
commit
1402213029
|
@ -367,14 +367,15 @@ int l_lovrGraphicsGetDimensions(lua_State* L) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int l_lovrGraphicsGetSystemLimits(lua_State* L) {
|
int l_lovrGraphicsGetSystemLimits(lua_State* L) {
|
||||||
|
GraphicsLimits limits = lovrGraphicsGetLimits();
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
lua_pushnumber(L, lovrGraphicsGetSystemLimit(LIMIT_POINT_SIZE));
|
lua_pushnumber(L, limits.pointSizes[1]);
|
||||||
lua_setfield(L, -2, "pointsize");
|
lua_setfield(L, -2, "pointsize");
|
||||||
lua_pushinteger(L, lovrGraphicsGetSystemLimit(LIMIT_TEXTURE_SIZE));
|
lua_pushinteger(L, limits.textureSize);
|
||||||
lua_setfield(L, -2, "texturesize");
|
lua_setfield(L, -2, "texturesize");
|
||||||
lua_pushinteger(L, lovrGraphicsGetSystemLimit(LIMIT_TEXTURE_MSAA));
|
lua_pushinteger(L, limits.textureMSAA);
|
||||||
lua_setfield(L, -2, "texturemsaa");
|
lua_setfield(L, -2, "texturemsaa");
|
||||||
lua_pushinteger(L, lovrGraphicsGetSystemLimit(LIMIT_TEXTURE_ANISOTROPY));
|
lua_pushinteger(L, limits.textureAnisotropy);
|
||||||
lua_setfield(L, -2, "anisotropy");
|
lua_setfield(L, -2, "anisotropy");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,19 +86,6 @@ void lovrGraphicsInit() {
|
||||||
state.fullscreenShader = lovrShaderCreate(lovrNoopVertexShader, lovrDefaultFragmentShader);
|
state.fullscreenShader = lovrShaderCreate(lovrNoopVertexShader, lovrDefaultFragmentShader);
|
||||||
state.defaultTexture = lovrTextureCreate(lovrTextureDataGetBlank(1, 1, 0xff, FORMAT_RGBA));
|
state.defaultTexture = lovrTextureCreate(lovrTextureDataGetBlank(1, 1, 0xff, FORMAT_RGBA));
|
||||||
|
|
||||||
// System Limits
|
|
||||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &state.maxTextureSize);
|
|
||||||
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &state.maxTextureAnisotropy);
|
|
||||||
#ifdef EMSCRIPTEN
|
|
||||||
state.maxPointSize = 1.f;
|
|
||||||
state.maxTextureMSAA = 1;
|
|
||||||
#else
|
|
||||||
float pointSizes[2];
|
|
||||||
glGetFloatv(GL_POINT_SIZE_RANGE, pointSizes);
|
|
||||||
state.maxPointSize = pointSizes[1];
|
|
||||||
glGetIntegerv(GL_MAX_SAMPLES, &state.maxTextureMSAA);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// State
|
// State
|
||||||
lovrGraphicsReset();
|
lovrGraphicsReset();
|
||||||
atexit(lovrGraphicsDestroy);
|
atexit(lovrGraphicsDestroy);
|
||||||
|
@ -411,14 +398,16 @@ int lovrGraphicsGetHeight() {
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
float lovrGraphicsGetSystemLimit(GraphicsLimit limit) {
|
GraphicsLimits lovrGraphicsGetLimits() {
|
||||||
switch (limit) {
|
if (!state.limits.initialized) {
|
||||||
case LIMIT_POINT_SIZE: return state.maxPointSize;
|
glGetFloatv(GL_POINT_SIZE_RANGE, state.limits.pointSizes);
|
||||||
case LIMIT_TEXTURE_SIZE: return state.maxTextureSize;
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &state.limits.textureSize);
|
||||||
case LIMIT_TEXTURE_MSAA: return state.maxTextureMSAA;
|
glGetIntegerv(GL_MAX_SAMPLES, &state.limits.textureMSAA);
|
||||||
case LIMIT_TEXTURE_ANISOTROPY: return state.maxTextureAnisotropy;
|
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &state.limits.textureAnisotropy);
|
||||||
default: error("Unknown limit %d\n", limit);
|
state.limits.initialized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return state.limits;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lovrGraphicsPushCanvas() {
|
void lovrGraphicsPushCanvas() {
|
||||||
|
|
|
@ -49,12 +49,13 @@ typedef enum {
|
||||||
COMPARE_GREATER = GL_GREATER
|
COMPARE_GREATER = GL_GREATER
|
||||||
} CompareMode;
|
} CompareMode;
|
||||||
|
|
||||||
typedef enum {
|
typedef struct {
|
||||||
LIMIT_POINT_SIZE,
|
int initialized;
|
||||||
LIMIT_TEXTURE_SIZE,
|
float pointSizes[2];
|
||||||
LIMIT_TEXTURE_MSAA,
|
int textureSize;
|
||||||
LIMIT_TEXTURE_ANISOTROPY
|
int textureMSAA;
|
||||||
} GraphicsLimit;
|
float textureAnisotropy;
|
||||||
|
} GraphicsLimits;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int framebuffer;
|
int framebuffer;
|
||||||
|
@ -93,10 +94,7 @@ typedef struct {
|
||||||
int isWireframe;
|
int isWireframe;
|
||||||
FilterMode defaultFilter;
|
FilterMode defaultFilter;
|
||||||
float defaultAnisotropy;
|
float defaultAnisotropy;
|
||||||
float maxPointSize;
|
GraphicsLimits limits;
|
||||||
int maxTextureSize;
|
|
||||||
int maxTextureMSAA;
|
|
||||||
float maxTextureAnisotropy;
|
|
||||||
} GraphicsState;
|
} GraphicsState;
|
||||||
|
|
||||||
// Base
|
// Base
|
||||||
|
@ -140,7 +138,7 @@ void lovrGraphicsGetDefaultFilter(FilterMode* filter, float* anisotropy);
|
||||||
void lovrGraphicsSetDefaultFilter(FilterMode filter, float anisotropy);
|
void lovrGraphicsSetDefaultFilter(FilterMode filter, float anisotropy);
|
||||||
int lovrGraphicsGetWidth();
|
int lovrGraphicsGetWidth();
|
||||||
int lovrGraphicsGetHeight();
|
int lovrGraphicsGetHeight();
|
||||||
float lovrGraphicsGetSystemLimit(GraphicsLimit limit);
|
GraphicsLimits lovrGraphicsGetLimits();
|
||||||
void lovrGraphicsPushCanvas();
|
void lovrGraphicsPushCanvas();
|
||||||
void lovrGraphicsPopCanvas();
|
void lovrGraphicsPopCanvas();
|
||||||
void lovrGraphicsSetViewport(int x, int y, int w, int h);
|
void lovrGraphicsSetViewport(int x, int y, int w, int h);
|
||||||
|
|
Loading…
Reference in New Issue