/** Construct a ModelBatch, using this constructor makes you responsible for calling context.begin() and context.end() yourself. * @param context The {@link RenderContext} to use. * @param shaderProvider The {@link ShaderProvider} to use, will be disposed when this ModelBatch is disposed. * @param sorter The {@link RenderableSorter} to use. */ public ModelBatch (final RenderContext context, final ShaderProvider shaderProvider, final RenderableSorter sorter) { this.sorter = (sorter == null) ? new DefaultRenderableSorter() : sorter; this.ownContext = (context == null); this.context = (context == null) ? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)) : context; this.shaderProvider = (shaderProvider == null) ? new DefaultShaderProvider() : shaderProvider; }
@Override public final int bind (final TextureDescriptor textureDesc) { return bindTexture(textureDesc, false); }
public DefaultTextureBinder (final int method, final int offset, int count, final int reuseWeight) { final int max = Math.min(getMaxTextureUnits(), MAX_GLES_UNITS); if (count < 0) count = max - offset; if (offset < 0 || count < 0 || (offset + count) > max || reuseWeight < 1) throw new GdxRuntimeException("Illegal arguments"); this.method = method; this.offset = offset; this.count = count; this.textures = new GLTexture[count]; this.reuseWeight = reuseWeight; this.weights = (method == WEIGHTED) ? new int[count] : null; }
private final int bindTexture (final TextureDescriptor textureDesc, final boolean rebind) { final int idx, result; final GLTexture texture = textureDesc.texture; reused = false; switch (method) { case ROUNDROBIN: result = offset + (idx = bindTextureRoundRobin(texture)); break; case WEIGHTED: result = offset + (idx = bindTextureWeighted(texture)); break; default: return -1; } if (reused) { reuseCount++; if (rebind) texture.bind(result); else Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0 + result); } else bindCount++; texture.unsafeSetWrap(textureDesc.uWrap, textureDesc.vWrap); texture.unsafeSetFilter(textureDesc.minFilter, textureDesc.magFilter); return result; }
private final int bindTexture (final TextureDescriptor textureDesc, final boolean rebind) { final int idx, result; final GLTexture texture = textureDesc.texture; reused = false; switch (method) { case ROUNDROBIN: result = offset + (idx = bindTextureRoundRobin(texture)); break; case WEIGHTED: result = offset + (idx = bindTextureWeighted(texture)); break; default: return -1; } if (reused) { reuseCount++; if (rebind) texture.bind(result); else Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0 + result); } else bindCount++; texture.unsafeSetWrap(textureDesc.uWrap, textureDesc.vWrap); texture.unsafeSetFilter(textureDesc.minFilter, textureDesc.magFilter); return result; }
private final int bindTexture (final TextureDescriptor textureDesc, final boolean rebind) { final int idx, result; final GLTexture texture = textureDesc.texture; reused = false; switch (method) { case ROUNDROBIN: result = offset + (idx = bindTextureRoundRobin(texture)); break; case WEIGHTED: result = offset + (idx = bindTextureWeighted(texture)); break; default: return -1; } if (reused) { reuseCount++; if (rebind) texture.bind(result); else Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0 + result); } else bindCount++; texture.unsafeSetWrap(textureDesc.uWrap, textureDesc.vWrap); texture.unsafeSetFilter(textureDesc.minFilter, textureDesc.magFilter); return result; }
/** Construct a ModelBatch, using this constructor makes you responsible for calling context.begin() and context.end() yourself. * @param context The {@link RenderContext} to use. * @param shaderProvider The {@link ShaderProvider} to use, will be disposed when this ModelBatch is disposed. * @param sorter The {@link RenderableSorter} to use. */ public ModelBatch (final RenderContext context, final ShaderProvider shaderProvider, final RenderableSorter sorter) { this.sorter = (sorter == null) ? new DefaultRenderableSorter() : sorter; this.ownContext = (context == null); this.context = (context == null) ? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)) : context; this.shaderProvider = (shaderProvider == null) ? new DefaultShaderProvider() : shaderProvider; }
@Override public final int bind (final TextureDescriptor textureDesc) { return bindTexture(textureDesc, false); }
public DefaultTextureBinder (final int method, final int offset, int count, final int reuseWeight) { final int max = Math.min(getMaxTextureUnits(), MAX_GLES_UNITS); if (count < 0) count = max - offset; if (offset < 0 || count < 0 || (offset + count) > max || reuseWeight < 1) throw new GdxRuntimeException("Illegal arguments"); this.method = method; this.offset = offset; this.count = count; this.textures = new GLTexture[count]; this.reuseWeight = reuseWeight; this.weights = (method == WEIGHTED) ? new int[count] : null; }
ShaderProgram.prependFragmentCode = Gdx.app.getType().equals(Application.ApplicationType.Desktop) ? "#version 140\n #extension GL_ARB_explicit_attrib_location : enable\n" : "#version 300 es\n"; renderContext = new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.ROUNDROBIN)); shaderProvider = new BaseShaderProvider() { @Override
@Override public final int bind (final GLTexture texture) { tempDesc.set(texture, null, null, null, null); return bindTexture(tempDesc, false); }
public DefaultTextureBinder (final int method, final int offset, int count, final int reuseWeight) { final int max = Math.min(getMaxTextureUnits(), MAX_GLES_UNITS); if (count < 0) count = max - offset; if (offset < 0 || count < 0 || (offset + count) > max || reuseWeight < 1) throw new GdxRuntimeException("Illegal arguments"); this.method = method; this.offset = offset; this.count = count; this.textures = new GLTexture[count]; this.reuseWeight = reuseWeight; this.weights = (method == WEIGHTED) ? new int[count] : null; }
/** Construct a ModelBatch, using this constructor makes you responsible for calling context.begin() and context.end() yourself. * @param context The {@link RenderContext} to use. * @param shaderProvider The {@link ShaderProvider} to use, will be disposed when this ModelBatch is disposed. * @param sorter The {@link RenderableSorter} to use. */ public ModelBatch (final RenderContext context, final ShaderProvider shaderProvider, final RenderableSorter sorter) { this.sorter = (sorter == null) ? new DefaultRenderableSorter() : sorter; this.ownContext = (context == null); this.context = (context == null) ? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)) : context; this.shaderProvider = (shaderProvider == null) ? new DefaultShaderProvider() : shaderProvider; }
@Override public final int bind (final GLTexture texture) { tempDesc.set(texture, null, null, null, null); return bindTexture(tempDesc, false); }
@Override public final int bind (final TextureDescriptor textureDesc) { return bindTexture(textureDesc, false); }
@Override public final int bind (final GLTexture texture) { tempDesc.set(texture, null, null, null, null); return bindTexture(tempDesc, false); }