Fixed on-screen keys disappearing in OpenArena

This commit is contained in:
Sergii Pylypenko
2014-01-27 23:21:53 +02:00
parent ca5c9133ff
commit 7cecc00c8f
3 changed files with 117 additions and 5 deletions

View File

@@ -93,6 +93,7 @@ enum { MOUSE_POINTER_W = 32, MOUSE_POINTER_H = 32, MOUSE_POINTER_X = 5, MOUSE_PO
static int sunTheme = 0;
static int joystickTouchPoints[MAX_JOYSTICKS*2];
static void R_DumpOpenGlState(void);
static inline int InsideRect(const SDL_Rect * r, int x, int y)
{
@@ -136,6 +137,18 @@ static inline void beginDrawingTex()
glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &oldGlState.clientTexunitId);
#endif
//R_DumpOpenGlState();
/*
glActiveTexture(GL_TEXTURE1);
glClientActiveTexture(GL_TEXTURE1);
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
*/
glActiveTexture(GL_TEXTURE0);
glClientActiveTexture(GL_TEXTURE0);
@@ -153,8 +166,17 @@ static inline void beginDrawingTex()
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glEnable(GL_BLEND);
glDisable(GL_CULL_FACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisableClientState(GL_COLOR_ARRAY);
//static const GLfloat color[] = { 1.0f, 1.0f, 1.0f, 1.0f };
//glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color);
//glDisable(GL_DEPTH_TEST);
//glDisable(GL_ALPHA_TEST);
//glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
//glDisableClientState(GL_NORMAL_ARRAY);
//glDisableClientState(GL_VERTEX_ARRAY);
//glDisableClientState(GL_TEXTURE_COORD_ARRAY);
}
static inline void endDrawingTex()
@@ -1187,3 +1209,97 @@ int SDL_ANDROID_SetScreenKeyboardHintMesage(const char * hint)
SDL_ANDROID_CallJavaSetScreenKeyboardHintMessage(hint);
return 1;
}
/**
* @brief Dumps OpenGL state for debugging - typically every capability set with glEnable().
*/
void R_DumpOpenGlState(void)
{
#define CAPABILITY( X ) {GL_ ## X, # X}
/* List taken from here: http://www.khronos.org/opengles/sdk/1.1/docs/man/glIsEnabled.xml */
const struct { GLenum idx; const char * text; } openGLCaps[] = {
CAPABILITY(ALPHA_TEST),
CAPABILITY(BLEND),
CAPABILITY(COLOR_ARRAY),
CAPABILITY(COLOR_LOGIC_OP),
CAPABILITY(COLOR_MATERIAL),
CAPABILITY(CULL_FACE),
CAPABILITY(DEPTH_TEST),
CAPABILITY(DITHER),
CAPABILITY(FOG),
CAPABILITY(LIGHTING),
CAPABILITY(LINE_SMOOTH),
CAPABILITY(MULTISAMPLE),
CAPABILITY(NORMAL_ARRAY),
CAPABILITY(NORMALIZE),
CAPABILITY(POINT_SMOOTH),
CAPABILITY(POLYGON_OFFSET_FILL),
CAPABILITY(RESCALE_NORMAL),
CAPABILITY(SAMPLE_ALPHA_TO_COVERAGE),
CAPABILITY(SAMPLE_ALPHA_TO_ONE),
CAPABILITY(SAMPLE_COVERAGE),
CAPABILITY(SCISSOR_TEST),
CAPABILITY(STENCIL_TEST),
CAPABILITY(VERTEX_ARRAY)
};
#undef CAPABILITY
char s[1024] = "";
GLint i;
GLint maxTexUnits = 0;
GLint activeTexUnit = 0;
GLint activeClientTexUnit = 0;
GLint activeTexId = 0;
GLfloat texEnvMode = 0;
const char * texEnvModeStr = "UNKNOWN";
GLfloat color[4];
for (i = 0; i < sizeof(openGLCaps) / sizeof(openGLCaps[0]); i++) {
if (glIsEnabled(openGLCaps[i].idx)) {
strcat(s, openGLCaps[i].text);
strcat(s, " ");
}
}
glGetFloatv(GL_CURRENT_COLOR, color);
__android_log_print(ANDROID_LOG_INFO, "libSDL", "OpenGL enabled caps: %s color %f %f %f %f \n", s, color[0], color[1], color[2], color[3]);
glGetIntegerv(GL_ACTIVE_TEXTURE, &activeTexUnit);
glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &activeClientTexUnit);
glGetIntegerv(GL_MAX_TEXTURE_UNITS, &maxTexUnits);
for (i = GL_TEXTURE0; i < GL_TEXTURE0 + maxTexUnits; i++) {
glActiveTexture(i);
glClientActiveTexture(i);
strcpy(s, "");
if (glIsEnabled (GL_TEXTURE_2D))
strcat(s, "enabled, ");
if (glIsEnabled (GL_TEXTURE_COORD_ARRAY))
strcat(s, "with texcoord array, ");
if (i == activeTexUnit)
strcat(s, "active, ");
if (i == activeClientTexUnit)
strcat(s, "client active, ");
glGetIntegerv(GL_TEXTURE_BINDING_2D, &activeTexId);
glGetTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, &texEnvMode);
if (fabs(texEnvMode - GL_ADD) < 0.1f)
texEnvModeStr = "ADD";
if (fabs(texEnvMode - GL_MODULATE) < 0.1f)
texEnvModeStr = "MODULATE";
if (fabs(texEnvMode - GL_DECAL) < 0.1f)
texEnvModeStr = "DECAL";
if (fabs(texEnvMode - GL_BLEND) < 0.1f)
texEnvModeStr = "BLEND";
if (fabs(texEnvMode - GL_REPLACE) < 0.1f)
texEnvModeStr = "REPLACE";
if (fabs(texEnvMode - GL_COMBINE) < 0.1f)
texEnvModeStr = "COMBINE";
__android_log_print(ANDROID_LOG_INFO, "libSDL", "Texunit: %d texID %d %s texEnv mode %s\n", i - GL_TEXTURE0, activeTexId, s, texEnvModeStr);
}
glActiveTexture(activeTexUnit);
glClientActiveTexture(activeClientTexUnit);
}

View File

@@ -24,10 +24,6 @@ Requested features, might never get implemented
TODO, which will get actually done
==================================
- OpenArena: Smooth camera rotation in aim under finger mode.
- OpenArena: fix and enable renderer_oa.
- OpenArena: chat text input should be faster.
- OpenArena: Shift and Ctrl keys on USB keyboard do not work for text input.