make uniform handle local var
This commit is contained in:
parent
c9137aa790
commit
60637f7440
@ -22,9 +22,10 @@ import org.oscim.utils.GlUtils;
|
|||||||
|
|
||||||
import android.graphics.Paint.Cap;
|
import android.graphics.Paint.Cap;
|
||||||
import android.opengl.GLES20;
|
import android.opengl.GLES20;
|
||||||
import android.util.FloatMath;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
// FIXME make sure coordinates are in valid range for short
|
||||||
|
|
||||||
public final class LineRenderer {
|
public final class LineRenderer {
|
||||||
private final static String TAG = "LineRenderer";
|
private final static String TAG = "LineRenderer";
|
||||||
|
|
||||||
@ -90,6 +91,11 @@ public final class LineRenderer {
|
|||||||
|
|
||||||
GLES20.glUseProgram(lineProgram[mode]);
|
GLES20.glUseProgram(lineProgram[mode]);
|
||||||
|
|
||||||
|
int uLineScale = hLineScale[mode];
|
||||||
|
int uLineMode = hLineMode[mode];
|
||||||
|
int uLineColor = hLineColor[mode];
|
||||||
|
int uLineWidth = hLineWidth[mode];
|
||||||
|
|
||||||
// int va = hLineVertexPosition[mode];
|
// int va = hLineVertexPosition[mode];
|
||||||
// if (!GLRenderer.vertexArray[va]) {
|
// if (!GLRenderer.vertexArray[va]) {
|
||||||
// GLES20.glEnableVertexAttribArray(va);
|
// GLES20.glEnableVertexAttribArray(va);
|
||||||
@ -121,12 +127,12 @@ public final class LineRenderer {
|
|||||||
if (mode == 1)
|
if (mode == 1)
|
||||||
pixel = 1.5f / s;
|
pixel = 1.5f / s;
|
||||||
|
|
||||||
GLES20.glUniform1f(hLineScale[mode], pixel);
|
GLES20.glUniform1f(uLineScale, pixel);
|
||||||
int lineMode = 0;
|
int lineMode = 0;
|
||||||
GLES20.glUniform1i(hLineMode[mode], lineMode);
|
GLES20.glUniform1i(uLineMode, lineMode);
|
||||||
|
|
||||||
// line scale factor (for non fixed lines)
|
// line scale factor (for non fixed lines)
|
||||||
float lineScale = FloatMath.sqrt(s);
|
float lineScale = (float) Math.sqrt(s);
|
||||||
float blurScale = pixel;
|
float blurScale = pixel;
|
||||||
boolean blur = false;
|
boolean blur = false;
|
||||||
// dont increase scale when max is reached
|
// dont increase scale when max is reached
|
||||||
@ -146,10 +152,10 @@ public final class LineRenderer {
|
|||||||
if (line.fade >= zoom)
|
if (line.fade >= zoom)
|
||||||
alpha = (scale > 1.2f ? scale : 1.2f) - alpha;
|
alpha = (scale > 1.2f ? scale : 1.2f) - alpha;
|
||||||
|
|
||||||
GlUtils.setColor(hLineColor[mode], line.color, alpha);
|
GlUtils.setColor(uLineColor, line.color, alpha);
|
||||||
|
|
||||||
if (blur && line.blur == 0) {
|
if (blur && line.blur == 0) {
|
||||||
GLES20.glUniform1f(hLineScale[mode], pixel);
|
GLES20.glUniform1f(uLineScale, pixel);
|
||||||
blur = false;
|
blur = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,22 +168,22 @@ public final class LineRenderer {
|
|||||||
width = ll.width / s + o.width / lineScale;
|
width = ll.width / s + o.width / lineScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLES20.glUniform1f(hLineWidth[mode], width);
|
GLES20.glUniform1f(uLineWidth, width);
|
||||||
|
|
||||||
if (line.blur != 0) {
|
if (line.blur != 0) {
|
||||||
blurScale = (ll.width + o.width) / s - (line.blur / s);
|
blurScale = (ll.width + o.width) / s - (line.blur / s);
|
||||||
GLES20.glUniform1f(hLineScale[mode], blurScale);
|
GLES20.glUniform1f(uLineScale, blurScale);
|
||||||
blur = true;
|
blur = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (o.line.cap == Cap.ROUND) {
|
if (o.line.cap == Cap.ROUND) {
|
||||||
if (lineMode != 1) {
|
if (lineMode != 1) {
|
||||||
lineMode = 1;
|
lineMode = 1;
|
||||||
GLES20.glUniform1i(hLineMode[mode], lineMode);
|
GLES20.glUniform1i(uLineMode, lineMode);
|
||||||
}
|
}
|
||||||
} else if (lineMode != 0) {
|
} else if (lineMode != 0) {
|
||||||
lineMode = 0;
|
lineMode = 0;
|
||||||
GLES20.glUniform1i(hLineMode[mode], lineMode);
|
GLES20.glUniform1i(uLineMode, lineMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, o.offset, o.verticesCnt);
|
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, o.offset, o.verticesCnt);
|
||||||
@ -192,22 +198,22 @@ public final class LineRenderer {
|
|||||||
width = ll.width / lineScale;
|
width = ll.width / lineScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLES20.glUniform1f(hLineWidth[mode], width);
|
GLES20.glUniform1f(uLineWidth, width);
|
||||||
|
|
||||||
if (line.blur != 0) {
|
if (line.blur != 0) {
|
||||||
blurScale = (ll.width / lineScale) * line.blur;
|
blurScale = (ll.width / lineScale) * line.blur;
|
||||||
GLES20.glUniform1f(hLineScale[mode], blurScale);
|
GLES20.glUniform1f(uLineScale, blurScale);
|
||||||
blur = true;
|
blur = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (line.cap == Cap.ROUND) {
|
if (line.cap == Cap.ROUND) {
|
||||||
if (lineMode != 1) {
|
if (lineMode != 1) {
|
||||||
lineMode = 1;
|
lineMode = 1;
|
||||||
GLES20.glUniform1i(hLineMode[mode], lineMode);
|
GLES20.glUniform1i(uLineMode, lineMode);
|
||||||
}
|
}
|
||||||
} else if (lineMode != 0) {
|
} else if (lineMode != 0) {
|
||||||
lineMode = 0;
|
lineMode = 0;
|
||||||
GLES20.glUniform1i(hLineMode[mode], lineMode);
|
GLES20.glUniform1i(uLineMode, lineMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, l.offset, l.verticesCnt);
|
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, l.offset, l.verticesCnt);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user