public TextureArray (TextureArrayData data) { super(GL30.GL_TEXTURE_2D_ARRAY, Gdx.gl.glGenTexture()); if (Gdx.gl30 == null) { throw new GdxRuntimeException("TextureArray requires a device running with GLES 3.0 compatibilty"); } load(data); if (data.isManaged()) addManagedTexture(Gdx.app, this); }
public TextureArray (String... internalPaths) { this(getInternalHandles(internalPaths)); }
private void load (TextureArrayData data) { if (this.data != null && data.isManaged() != this.data.isManaged()) throw new GdxRuntimeException("New data must have the same managed status as the old data"); this.data = data; bind(); Gdx.gl30.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, data.getInternalFormat(), data.getWidth(), data.getHeight(), data.getDepth(), 0, data.getInternalFormat(), data.getGLType(), null); if (!data.isPrepared()) data.prepare(); data.consumeTextureArrayData(); setFilter(minFilter, magFilter); setWrap(uWrap, vWrap); Gdx.gl.glBindTexture(glTarget, 0); }
Gdx.input.setInputProcessor(cameraController); textureArray = new TextureArray(texPaths); textureArray.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); shaderProgram = new ShaderProgram(Gdx.files.internal("data/shaders/texturearray.vert"), Gdx.files.internal("data/shaders/texturearray.frag")); System.out.println(shaderProgram.getLog());
@Override public void render () { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); Gdx.gl.glEnable(GL20.GL_DEPTH_TEST); Gdx.gl.glDepthFunc(GL20.GL_LEQUAL); Gdx.gl.glCullFace(GL20.GL_BACK); modelView.translate(10f, 0, 10f).rotate(0, 1f, 0, 2f * Gdx.graphics.getDeltaTime()).translate(-10f, 0, -10f); cameraController.update(); textureArray.bind(); shaderProgram.begin(); shaderProgram.setUniformi("u_textureArray", 0); shaderProgram.setUniformMatrix("u_projViewTrans", camera.combined); shaderProgram.setUniformMatrix("u_modelView", modelView); terrain.render(shaderProgram, GL20.GL_TRIANGLES); shaderProgram.end(); }
/** Invalidate all managed TextureArrays. This is an internal method. Do not use it! */ public static void invalidateAllTextureArrays (Application app) { Array<TextureArray> managedTextureArray = managedTextureArrays.get(app); if (managedTextureArray == null) return; for (int i = 0; i < managedTextureArray.size; i++) { TextureArray textureArray = managedTextureArray.get(i); textureArray.reload(); } }
public void clearManagedCaches () { Mesh.clearAllMeshes(app); Texture.clearAllTextures(app); Cubemap.clearAllCubemaps(app); TextureArray.clearAllTextureArrays(app); ShaderProgram.clearAllShaderPrograms(app); FrameBuffer.clearAllFrameBuffers(app); logManagedCachesStatus(); }
@Override public void onSurfaceCreated (javax.microedition.khronos.opengles.GL10 gl, EGLConfig config) { eglContext = ((EGL10)EGLContext.getEGL()).eglGetCurrentContext(); setupGL(gl); logConfig(config); updatePpi(); Mesh.invalidateAllMeshes(app); Texture.invalidateAllTextures(app); Cubemap.invalidateAllCubemaps(app); TextureArray.invalidateAllTextureArrays(app); ShaderProgram.invalidateAllShaderPrograms(app); FrameBuffer.invalidateAllFrameBuffers(app); logManagedCachesStatus(); Display display = app.getWindowManager().getDefaultDisplay(); this.width = display.getWidth(); this.height = display.getHeight(); this.mean = new WindowedMean(5); this.lastFrameTime = System.nanoTime(); gl.glViewport(0, 0, this.width, this.height); }
private void load (TextureArrayData data) { if (this.data != null && data.isManaged() != this.data.isManaged()) throw new GdxRuntimeException("New data must have the same managed status as the old data"); this.data = data; bind(); Gdx.gl30.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, data.getInternalFormat(), data.getWidth(), data.getHeight(), data.getDepth(), 0, data.getInternalFormat(), data.getGLType(), null); if (!data.isPrepared()) data.prepare(); data.consumeTextureArrayData(); setFilter(minFilter, magFilter); setWrap(uWrap, vWrap); Gdx.gl.glBindTexture(glTarget, 0); }
/** Invalidate all managed TextureArrays. This is an internal method. Do not use it! */ public static void invalidateAllTextureArrays (Application app) { Array<TextureArray> managedTextureArray = managedTextureArrays.get(app); if (managedTextureArray == null) return; for (int i = 0; i < managedTextureArray.size; i++) { TextureArray textureArray = managedTextureArray.get(i); textureArray.reload(); } }
public void clearManagedCaches () { Mesh.clearAllMeshes(app); Texture.clearAllTextures(app); Cubemap.clearAllCubemaps(app); TextureArray.clearAllTextureArrays(app); ShaderProgram.clearAllShaderPrograms(app); FrameBuffer.clearAllFrameBuffers(app); logManagedCachesStatus(); }
@Override public void onSurfaceCreated (javax.microedition.khronos.opengles.GL10 gl, EGLConfig config) { eglContext = ((EGL10)EGLContext.getEGL()).eglGetCurrentContext(); setupGL(gl); logConfig(config); updatePpi(); Mesh.invalidateAllMeshes(app); Texture.invalidateAllTextures(app); Cubemap.invalidateAllCubemaps(app); TextureArray.invalidateAllTextureArrays(app); ShaderProgram.invalidateAllShaderPrograms(app); FrameBuffer.invalidateAllFrameBuffers(app); logManagedCachesStatus(); Display display = app.getWindowManager().getDefaultDisplay(); this.width = display.getWidth(); this.height = display.getHeight(); this.mean = new WindowedMean(5); this.lastFrameTime = System.nanoTime(); gl.glViewport(0, 0, this.width, this.height); }
private void load (TextureArrayData data) { if (this.data != null && data.isManaged() != this.data.isManaged()) throw new GdxRuntimeException("New data must have the same managed status as the old data"); this.data = data; bind(); Gdx.gl30.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, data.getInternalFormat(), data.getWidth(), data.getHeight(), data.getDepth(), 0, data.getInternalFormat(), data.getGLType(), null); if (!data.isPrepared()) data.prepare(); data.consumeTextureArrayData(); setFilter(minFilter, magFilter); setWrap(uWrap, vWrap); Gdx.gl.glBindTexture(glTarget, 0); }
public TextureArray (TextureArrayData data) { super(GL30.GL_TEXTURE_2D_ARRAY, Gdx.gl.glGenTexture()); if (Gdx.gl30 == null) { throw new GdxRuntimeException("TextureArray requires a device running with GLES 3.0 compatibilty"); } load(data); if (data.isManaged()) addManagedTexture(Gdx.app, this); }
/** Invalidate all managed TextureArrays. This is an internal method. Do not use it! */ public static void invalidateAllTextureArrays (Application app) { Array<TextureArray> managedTextureArray = managedTextureArrays.get(app); if (managedTextureArray == null) return; for (int i = 0; i < managedTextureArray.size; i++) { TextureArray textureArray = managedTextureArray.get(i); textureArray.reload(); } }
public TextureArray (String... internalPaths) { this(getInternalHandles(internalPaths)); }
public TextureArray (TextureArrayData data) { super(GL30.GL_TEXTURE_2D_ARRAY, Gdx.gl.glGenTexture()); if (Gdx.gl30 == null) { throw new GdxRuntimeException("TextureArray requires a device running with GLES 3.0 compatibilty"); } load(data); if (data.isManaged()) addManagedTexture(Gdx.app, this); }