always (re-)set VertexAttribArray state, solves issue with gl hanging on S3

This commit is contained in:
Hannes Janetzek 2012-11-19 14:21:04 +01:00
parent adc808f505
commit 64c56ce7df
3 changed files with 31 additions and 28 deletions

View File

@ -91,16 +91,16 @@ public final class LineRenderer {
GLES20.glUseProgram(lineProgram[mode]); GLES20.glUseProgram(lineProgram[mode]);
int va = hLineVertexPosition[mode]; int va = hLineVertexPosition[mode];
if (!GLRenderer.vertexArray[va]) { //if (!GLRenderer.vertexArray[va]) {
GLES20.glEnableVertexAttribArray(va); GLES20.glEnableVertexAttribArray(va);
GLRenderer.vertexArray[va] = true; // GLRenderer.vertexArray[va] = true;
} //}
va = hLineTexturePosition[mode]; va = hLineTexturePosition[mode];
if (!GLRenderer.vertexArray[va]) { //if (!GLRenderer.vertexArray[va]) {
GLES20.glEnableVertexAttribArray(va); GLES20.glEnableVertexAttribArray(va);
GLRenderer.vertexArray[va] = true; // GLRenderer.vertexArray[va] = true;
} //}
// GLES20.glEnableVertexAttribArray(hLineVertexPosition[mode]); // GLES20.glEnableVertexAttribArray(hLineVertexPosition[mode]);
// GLES20.glEnableVertexAttribArray(hLineTexturePosition[mode]); // GLES20.glEnableVertexAttribArray(hLineTexturePosition[mode]);
@ -215,8 +215,8 @@ public final class LineRenderer {
} }
// GLES20.glDisableVertexAttribArray(hLineVertexPosition[mode]); GLES20.glDisableVertexAttribArray(hLineVertexPosition[mode]);
// GLES20.glDisableVertexAttribArray(hLineTexturePosition[mode]); GLES20.glDisableVertexAttribArray(hLineTexturePosition[mode]);
return l; return l;
} }

View File

@ -169,15 +169,15 @@ public final class PolygonRenderer {
glUseProgram(polygonProgram); glUseProgram(polygonProgram);
int va = hPolygonVertexPosition; int va = hPolygonVertexPosition;
if (!GLRenderer.vertexArray[va]) { //if (!GLRenderer.vertexArray[va]) {
GLES20.glEnableVertexAttribArray(va); GLES20.glEnableVertexAttribArray(va);
GLRenderer.vertexArray[va] = true; // GLRenderer.vertexArray[va] = true;
} //}
va = va == 0 ? 1 : 0; //va = va == 0 ? 1 : 0;
if (GLRenderer.vertexArray[va]) { //if (GLRenderer.vertexArray[va]) {
GLES20.glDisableVertexAttribArray(va); // GLES20.glDisableVertexAttribArray(va);
GLRenderer.vertexArray[va] = false; // GLRenderer.vertexArray[va] = false;
} //}
// GLES20.glEnableVertexAttribArray(hPolygonVertexPosition); // GLES20.glEnableVertexAttribArray(hPolygonVertexPosition);
glVertexAttribPointer(hPolygonVertexPosition, 2, GLES20.GL_SHORT, glVertexAttribPointer(hPolygonVertexPosition, 2, GLES20.GL_SHORT,
@ -299,7 +299,7 @@ public final class PolygonRenderer {
if (clip && first) if (clip && first)
drawDepthClip(); drawDepthClip();
// GLES20.glDisableVertexAttribArray(hPolygonVertexPosition); GLES20.glDisableVertexAttribArray(hPolygonVertexPosition);
return l; return l;
} }

View File

@ -98,16 +98,16 @@ public final class TextureRenderer {
GLES20.glUseProgram(mTextureProgram); GLES20.glUseProgram(mTextureProgram);
int va = hTextureTexCoord; int va = hTextureTexCoord;
if (!GLRenderer.vertexArray[va]) { //if (!GLRenderer.vertexArray[va]) {
GLES20.glEnableVertexAttribArray(va); GLES20.glEnableVertexAttribArray(va);
GLRenderer.vertexArray[va] = true; // GLRenderer.vertexArray[va] = true;
} //}
va = hTextureVertex; va = hTextureVertex;
if (!GLRenderer.vertexArray[va]) { //if (!GLRenderer.vertexArray[va]) {
GLES20.glEnableVertexAttribArray(va); GLES20.glEnableVertexAttribArray(va);
GLRenderer.vertexArray[va] = true; // GLRenderer.vertexArray[va] = true;
} //}
TextureLayer tl = (TextureLayer) layer; TextureLayer tl = (TextureLayer) layer;
@ -155,6 +155,9 @@ public final class TextureRenderer {
// GlUtils.checkGlError("< draw texture"); // GlUtils.checkGlError("< draw texture");
GLES20.glDisableVertexAttribArray(hTextureVertex);
GLES20.glDisableVertexAttribArray(hTextureTexCoord);
return layer.next; return layer.next;
} }
} }