4 Commits

Author SHA1 Message Date
Aaron Culliney
63b6e0a29a Fix my blended rendering on Tegra 2 (and arguably globally) 2015-11-07 10:36:20 -08:00
Aaron Culliney
f423c2dbe6 Work around broken Tegra 2 GPU 2015-11-06 22:18:16 -08:00
Aaron Culliney
dd7727f757 Simplify fragment shader and remove dead macro 2015-11-06 21:20:33 -08:00
Aaron Culliney
e9bae19e9e Bump Android version to 1.0.3 2015-11-04 21:15:12 -08:00
3 changed files with 26 additions and 31 deletions

View File

@@ -27,8 +27,8 @@ android {
applicationId "org.deadc0de.apple2ix.basic"
minSdkVersion 10
targetSdkVersion 21
versionCode 5
versionName "1.0.2"
versionCode 6
versionName "1.0.3"
ndk {
moduleName "apple2ix"
}

View File

@@ -24,18 +24,12 @@ uniform float aValue;
uniform sampler2D texture;
#if __VERSION__ >= 140
#define OUTPUT_TEXTURE(TEX) \
vec4 tex = texture(TEX, varTexcoord.st, 0.0); \
fragColor = vec4(tex.r, tex.g, tex.b, tex.a*aValue)
#define OUTPUT_RED() \
fragColor = vec4(1.0, 0.0, 0.0, 1.0)
#define OUTPUT_TEXTURE(TEX) vec4 tex = texture(TEX, varTexcoord.st, 0.0); fragColor = vec4(tex.r, tex.g, tex.b, tex.a*aValue)
#else
#define OUTPUT_TEXTURE(TEX) vec4 tex = texture2D(TEX, varTexcoord.st, 0.0); gl_FragColor = vec4(tex.r, tex.g, tex.b, tex.a*aValue)
#define OUTPUT_RED() gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0)
#endif
void main(void)
{
OUTPUT_TEXTURE(texture);
//OUTPUT_RED(); -- WTF is this failing?
}

View File

@@ -46,6 +46,9 @@ static GLuint texcoordBufferName = UNINITIALIZED_GL;
static GLuint elementBufferName = UNINITIALIZED_GL;
static GLModel *crtModel = NULL;
static GLuint vertexShader = UNINITIALIZED_GL;
static GLuint fragShader = UNINITIALIZED_GL;
static video_backend_s glvideo_backend = { 0 };
#if USE_GLUT
@@ -323,7 +326,7 @@ static GLuint _build_program(demoSource *vertexSource, demoSource *fragmentSourc
sprintf(sourceString, "%s", vertexSource->string);
}
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, (const GLchar **)&(sourceString), NULL);
glCompileShader(vertexShader);
glGetShaderiv(vertexShader, GL_INFO_LOG_LENGTH, &logLength);
@@ -362,7 +365,7 @@ static GLuint _build_program(demoSource *vertexSource, demoSource *fragmentSourc
sprintf(sourceString, "%s", fragmentSource->string);
}
GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER);
fragShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragShader, 1, (const GLchar **)&(sourceString), NULL);
glCompileShader(fragShader);
glGetShaderiv(fragShader, GL_INFO_LOG_LENGTH, &logLength);
@@ -398,17 +401,6 @@ static GLuint _build_program(demoSource *vertexSource, demoSource *fragmentSourc
free(log);
}
glDetachShader(prgName, vertexShader);
glDetachShader(prgName, fragShader);
// Delete the vertex shader since it is now attached and linked
// to the program, which will retain a reference to it
glDeleteShader(vertexShader);
// Delete the fragment shader since it is now attached and linked
// to the program, which will retain a reference to it
glDeleteShader(fragShader);
glGetProgramiv(prgName, GL_LINK_STATUS, &status);
if (status == 0) {
LOG("Failed to link program");
@@ -641,15 +633,13 @@ static void gldriver_init_common(void) {
// ----------------------------
// setup static OpenGL state
// Depth test will always be enabled
glEnable(GL_DEPTH_TEST);
// We will always cull back faces for better performance
glEnable(GL_CULL_FACE);
// Always use this clear color
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// Set up to do blending of texture quads. Disabling DEPTH/CULL appears to fix blended quad/texture rendering on
// finicky Tegra 2. This generally appears to be the correct way to do it accoring to NVIDIA forums and:
// http://www.learnopengles.com/android-lesson-five-an-introduction-to-blending/
glDisable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -687,6 +677,17 @@ static void _gldriver_shutdown(void) {
mdlDestroyModel(&crtModel);
// detach and delete the main shaders
// 2015/11/06 NOTE : Tegra 2 for mobile has a bug whereby you cannot detach/delete shaders immediately after
// creating the program. So we delete them during the shutdown sequence instead.
// https://code.google.com/p/android/issues/detail?id=61832
glDetachShader(mainShaderProgram, vertexShader);
glDetachShader(mainShaderProgram, fragShader);
glDeleteShader(vertexShader);
glDeleteShader(fragShader);
vertexShader = UNINITIALIZED_GL;
fragShader = UNINITIALIZED_GL;
glUseProgram(0);
if (mainShaderProgram != UNINITIALIZED_GL) {
glDeleteProgram(mainShaderProgram);
@@ -749,7 +750,7 @@ static void gldriver_render(void) {
return;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClear(GL_COLOR_BUFFER_BIT);
#if MOBILE_DEVICE
glViewport(viewportX, viewportY, viewportWidth, viewportHeight);
#endif
@@ -903,7 +904,7 @@ static void gldriver_reshape(int w, int h) {
#if USE_GLUT
static void gldriver_init_glut(GLuint fbo) {
glutInit(&argc, argv);
glutInitDisplayMode(/*GLUT_DOUBLE|*/GLUT_RGBA|GLUT_DEPTH);
glutInitDisplayMode(/*GLUT_DOUBLE|*/GLUT_RGBA);
glutInitWindowSize(windowWidth, windowHeight);
//glutInitContextVersion(4, 0); -- Is this needed?
glutInitContextProfile(GLUT_CORE_PROFILE);