|
@@ -131,40 +131,45 @@ public class OGLESShaderRenderer implements Renderer {
|
|
|
public EnumSet<Caps> getCaps() {
|
|
public EnumSet<Caps> getCaps() {
|
|
|
return caps;
|
|
return caps;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private int extractVersion(String prefixStr, String versionStr) {
|
|
|
|
|
+ if (versionStr != null) {
|
|
|
|
|
+ int spaceIdx = versionStr.indexOf(" ", prefixStr.length());
|
|
|
|
|
+ if (spaceIdx >= 1) {
|
|
|
|
|
+ versionStr = versionStr.substring(prefixStr.length(), spaceIdx).trim();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ versionStr = versionStr.substring(prefixStr.length()).trim();
|
|
|
|
|
+ }
|
|
|
|
|
+ float version = Float.parseFloat(versionStr);
|
|
|
|
|
+ return (int) (version * 100);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
public void initialize() {
|
|
public void initialize() {
|
|
|
logger.log(Level.INFO, "Vendor: {0}", GLES20.glGetString(GLES20.GL_VENDOR));
|
|
logger.log(Level.INFO, "Vendor: {0}", GLES20.glGetString(GLES20.GL_VENDOR));
|
|
|
logger.log(Level.INFO, "Renderer: {0}", GLES20.glGetString(GLES20.GL_RENDERER));
|
|
logger.log(Level.INFO, "Renderer: {0}", GLES20.glGetString(GLES20.GL_RENDERER));
|
|
|
logger.log(Level.INFO, "Version: {0}", GLES20.glGetString(GLES20.GL_VERSION));
|
|
logger.log(Level.INFO, "Version: {0}", GLES20.glGetString(GLES20.GL_VERSION));
|
|
|
-
|
|
|
|
|
|
|
+ logger.log(Level.INFO, "Shading Language Version: {0}", GLES20.glGetString(GLES20.GL_SHADING_LANGUAGE_VERSION));
|
|
|
|
|
+
|
|
|
powerVr = GLES20.glGetString(GLES20.GL_RENDERER).contains("PowerVR");
|
|
powerVr = GLES20.glGetString(GLES20.GL_RENDERER).contains("PowerVR");
|
|
|
|
|
|
|
|
- String versionStr = GLES20.glGetString(GLES20.GL_SHADING_LANGUAGE_VERSION);
|
|
|
|
|
- logger.log(Level.INFO, "GLES20.Shading Language Version: {0}", versionStr);
|
|
|
|
|
- if (versionStr == null || versionStr.equals("")) {
|
|
|
|
|
- glslVer = -1;
|
|
|
|
|
- throw new UnsupportedOperationException("GLSL and OpenGL2 is "
|
|
|
|
|
- + "required for the OpenGL ES "
|
|
|
|
|
- + "renderer!");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// Fix issue in TestRenderToMemory when GL_FRONT is the main
|
|
// Fix issue in TestRenderToMemory when GL_FRONT is the main
|
|
|
// buffer being used.
|
|
// buffer being used.
|
|
|
|
|
|
|
|
// initialDrawBuf = GLES20.glGetIntegeri(GLES20.GL_DRAW_BUFFER);
|
|
// initialDrawBuf = GLES20.glGetIntegeri(GLES20.GL_DRAW_BUFFER);
|
|
|
// initialReadBuf = GLES20.glGetIntegeri(GLES20.GL_READ_BUFFER);
|
|
// initialReadBuf = GLES20.glGetIntegeri(GLES20.GL_READ_BUFFER);
|
|
|
|
|
|
|
|
- String openGlEsStr = "OpenGL ES GLSL ES ";
|
|
|
|
|
- int spaceIdx = versionStr.indexOf(" ", openGlEsStr.length());
|
|
|
|
|
- if (spaceIdx >= 1) {
|
|
|
|
|
- versionStr = versionStr.substring(openGlEsStr.length(), spaceIdx).trim();
|
|
|
|
|
- }else{
|
|
|
|
|
- versionStr = versionStr.substring(openGlEsStr.length()).trim();
|
|
|
|
|
|
|
+ // Check OpenGL version
|
|
|
|
|
+ int openGlVer = extractVersion("OpenGL ES ", GLES20.glGetString(GLES20.GL_VERSION));
|
|
|
|
|
+ if (openGlVer == -1) {
|
|
|
|
|
+ glslVer = -1;
|
|
|
|
|
+ throw new UnsupportedOperationException("OpenGL ES 2.0+ is required for OGLESShaderRenderer!");
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- float version = Float.parseFloat(versionStr);
|
|
|
|
|
- glslVer = (int) (version * 100);
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // Check shader language version
|
|
|
|
|
+ glslVer = extractVersion("OpenGL ES GLSL ES ", GLES20.glGetString(GLES20.GL_SHADING_LANGUAGE_VERSION));
|
|
|
switch (glslVer) {
|
|
switch (glslVer) {
|
|
|
// TODO: When new versions of OpenGL ES shader language come out,
|
|
// TODO: When new versions of OpenGL ES shader language come out,
|
|
|
// update this.
|
|
// update this.
|
|
@@ -172,12 +177,7 @@ public class OGLESShaderRenderer implements Renderer {
|
|
|
caps.add(Caps.GLSL100);
|
|
caps.add(Caps.GLSL100);
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- if (!caps.contains(Caps.GLSL100)) {
|
|
|
|
|
- logger.warning("Force-adding GLSL100 support, since OpenGL2 is supported.");
|
|
|
|
|
- caps.add(Caps.GLSL100);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
GLES20.glGetIntegerv(GLES20.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, intBuf16);
|
|
GLES20.glGetIntegerv(GLES20.GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, intBuf16);
|
|
|
vertexTextureUnits = intBuf16.get(0);
|
|
vertexTextureUnits = intBuf16.get(0);
|
|
|
logger.log(Level.INFO, "VTF Units: {0}", vertexTextureUnits);
|
|
logger.log(Level.INFO, "VTF Units: {0}", vertexTextureUnits);
|