* Add checks for maximum texture resolution in all renderers
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9980 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
78d1754df1
commit
9e03dba566
@ -1494,6 +1494,17 @@ public class OGLESShaderRenderer implements Renderer {
|
||||
img.setMipmapsGenerated(true);
|
||||
}
|
||||
|
||||
if (target == GLES20.GL_TEXTURE_CUBE_MAP) {
|
||||
// Check max texture size before upload
|
||||
if (img.getWidth() > maxCubeTexSize || img.getHeight() > maxCubeTexSize) {
|
||||
throw new RendererException("Cannot upload cubemap " + img + ". The maximum supported cubemap resolution is " + maxCubeTexSize);
|
||||
}
|
||||
} else {
|
||||
if (img.getWidth() > maxTexSize || img.getHeight() > maxTexSize) {
|
||||
throw new RendererException("Cannot upload texture " + img + ". The maximum supported texture resolution is " + maxTexSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (target == GLES20.GL_TEXTURE_CUBE_MAP) {
|
||||
// Upload a cube map / sky box
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -41,6 +41,7 @@ import com.jme3.math.Vector3f;
|
||||
import com.jme3.renderer.Caps;
|
||||
import com.jme3.renderer.GL1Renderer;
|
||||
import com.jme3.renderer.RenderContext;
|
||||
import com.jme3.renderer.RendererException;
|
||||
import com.jme3.renderer.Statistics;
|
||||
import com.jme3.scene.Mesh;
|
||||
import com.jme3.scene.Mesh.Mode;
|
||||
@ -142,6 +143,8 @@ public class JoglGL1Renderer implements GL1Renderer {
|
||||
gl.glGetIntegerv(GL2.GL_MAX_LIGHTS, ib1);
|
||||
maxLights = ib1.get(0);
|
||||
|
||||
gl.glGetIntegerv(GL.GL_MAX_TEXTURE_SIZE, ib1);
|
||||
maxTexSize = ib1.get(0);
|
||||
}
|
||||
|
||||
public void invalidateState() {
|
||||
@ -805,6 +808,10 @@ public class JoglGL1Renderer implements GL1Renderer {
|
||||
} else {
|
||||
}
|
||||
|
||||
if (img.getWidth() > maxTexSize || img.getHeight() > maxTexSize) {
|
||||
throw new RendererException("Cannot upload texture " + img + ". The maximum supported texture resolution is " + maxTexSize);
|
||||
}
|
||||
|
||||
/*
|
||||
if (target == GL_TEXTURE_CUBE_MAP) {
|
||||
List<ByteBuffer> data = img.getData();
|
||||
|
@ -1903,7 +1903,18 @@ public class JoglRenderer implements Renderer {
|
||||
throw new RendererException("Multisample textures not supported by graphics hardware");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (target == GL.GL_TEXTURE_CUBE_MAP) {
|
||||
// Check max texture size before upload
|
||||
if (img.getWidth() > maxCubeTexSize || img.getHeight() > maxCubeTexSize) {
|
||||
throw new RendererException("Cannot upload cubemap " + img + ". The maximum supported cubemap resolution is " + maxCubeTexSize);
|
||||
}
|
||||
} else {
|
||||
if (img.getWidth() > maxTexSize || img.getHeight() > maxTexSize) {
|
||||
throw new RendererException("Cannot upload texture " + img + ". The maximum supported texture resolution is " + maxTexSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (target == GL.GL_TEXTURE_CUBE_MAP) {
|
||||
List<ByteBuffer> data = img.getData();
|
||||
if (data.size() != 6) {
|
||||
|
@ -10,6 +10,7 @@ import com.jme3.math.Vector3f;
|
||||
import com.jme3.renderer.Caps;
|
||||
import com.jme3.renderer.GL1Renderer;
|
||||
import com.jme3.renderer.RenderContext;
|
||||
import com.jme3.renderer.RendererException;
|
||||
import com.jme3.renderer.Statistics;
|
||||
import com.jme3.scene.Mesh;
|
||||
import com.jme3.scene.Mesh.Mode;
|
||||
@ -111,7 +112,7 @@ public class LwjglGL1Renderer implements GL1Renderer {
|
||||
}
|
||||
|
||||
maxLights = glGetInteger(GL_MAX_LIGHTS);
|
||||
|
||||
maxTexSize = glGetInteger(GL_MAX_TEXTURE_SIZE);
|
||||
}
|
||||
|
||||
public void invalidateState() {
|
||||
@ -761,6 +762,10 @@ public class LwjglGL1Renderer implements GL1Renderer {
|
||||
} else {
|
||||
}
|
||||
|
||||
if (img.getWidth() > maxTexSize || img.getHeight() > maxTexSize) {
|
||||
throw new RendererException("Cannot upload texture " + img + ". The maximum supported texture resolution is " + maxTexSize);
|
||||
}
|
||||
|
||||
/*
|
||||
if (target == GL_TEXTURE_CUBE_MAP) {
|
||||
List<ByteBuffer> data = img.getData();
|
||||
|
@ -85,6 +85,7 @@ public class LwjglRenderer implements Renderer {
|
||||
private final StringBuilder stringBuf = new StringBuilder(250);
|
||||
private final IntBuffer intBuf1 = BufferUtils.createIntBuffer(1);
|
||||
private final IntBuffer intBuf16 = BufferUtils.createIntBuffer(16);
|
||||
private final FloatBuffer floatBuf16 = BufferUtils.createFloatBuffer(16);
|
||||
private final RenderContext context = new RenderContext();
|
||||
private final NativeObjectManager objManager = new NativeObjectManager();
|
||||
private final EnumSet<Caps> caps = EnumSet.noneOf(Caps.class);
|
||||
@ -1851,6 +1852,17 @@ public class LwjglRenderer implements Renderer {
|
||||
throw new RendererException("Multisample textures not supported by graphics hardware");
|
||||
}
|
||||
}
|
||||
|
||||
if (target == GL_TEXTURE_CUBE_MAP) {
|
||||
// Check max texture size before upload
|
||||
if (img.getWidth() > maxCubeTexSize || img.getHeight() > maxCubeTexSize) {
|
||||
throw new RendererException("Cannot upload cubemap " + img + ". The maximum supported cubemap resolution is " + maxCubeTexSize);
|
||||
}
|
||||
} else {
|
||||
if (img.getWidth() > maxTexSize || img.getHeight() > maxTexSize) {
|
||||
throw new RendererException("Cannot upload texture " + img + ". The maximum supported texture resolution is " + maxTexSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (target == GL_TEXTURE_CUBE_MAP) {
|
||||
List<ByteBuffer> data = img.getData();
|
||||
|
Loading…
x
Reference in New Issue
Block a user