public BufferObject getPointBuffer(RenderContext rc) { if (this.points == null) { return null; } BufferObject bufferObject = rc.getBufferObject(this.pointBufferKey); if (bufferObject != null) { return bufferObject; } // TODO consider a pool of terrain tiles // TODO consider a pool of terrain tile vertex buffers int size = this.points.length * 4; FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asFloatBuffer(); buffer.put(this.points).rewind(); return rc.putBufferObject(this.pointBufferKey, new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer)); } }
this.levelSetVertexTexCoordBuffer = rc.getBufferObject(this.levelSetVertexTexCoordKey); if (this.levelSetVertexTexCoordBuffer == null) { int size = this.levelSetVertexTexCoords.length * 4; this.levelSetElementBuffer = rc.getBufferObject(this.levelSetElementKey); if (this.levelSetElementBuffer == null) { int size = (this.levelSetLineElements.length + this.levelSetTriStripElements.length) * 2;
protected void renderSky(RenderContext rc) { Pool<DrawableSkyAtmosphere> pool = rc.getDrawablePool(DrawableSkyAtmosphere.class); DrawableSkyAtmosphere drawable = DrawableSkyAtmosphere.obtain(pool); int size = 128; drawable.program = (SkyProgram) rc.getShaderProgram(SkyProgram.KEY); if (drawable.program == null) { drawable.program = (SkyProgram) rc.putShaderProgram(SkyProgram.KEY, new SkyProgram(rc.resources)); } drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY); if (drawable.vertexPoints == null) { drawable.vertexPoints = rc.putBufferObject(VERTEX_POINTS_KEY, this.assembleVertexPoints(rc, size, size, (float) drawable.program.getAltitude())); } drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY); if (drawable.triStripElements == null) { drawable.triStripElements = rc.putBufferObject(TRI_STRIP_ELEMENTS_KEY, this.assembleTriStripElements(size, size)); } drawable.lightDirection.set(this.activeLightDirection); drawable.globeRadius = rc.globe.getEquatorialRadius(); rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY /*z-order after all other surface drawables*/); }
drawState.vertexBuffer = rc.getBufferObject(this.vertexBufferKey); if (drawState.vertexBuffer == null) { int size = this.vertexArray.length * 4; drawState.elementBuffer = rc.getBufferObject(elementBufferKey); if (drawState.elementBuffer == null) { drawState.elementBuffer = assembleElements(this.activeIntervals);
drawState.vertexBuffer = rc.getBufferObject(this.vertexBufferKey); if (drawState.vertexBuffer == null) { int size = this.vertexArray.size() * 4; drawState.elementBuffer = rc.getBufferObject(this.elementBufferKey); if (drawState.elementBuffer == null) { int size = (this.topElements.size() * 2) + (this.sideElements.size() * 2) + (this.outlineElements.size() * 2) + (this.verticalElements.size() * 2);
drawState.vertexBuffer = rc.getBufferObject(this.vertexBufferKey); if (drawState.vertexBuffer == null) { int size = this.vertexArray.size() * 4; drawState.elementBuffer = rc.getBufferObject(this.elementBufferKey); if (drawState.elementBuffer == null) { int size = (this.interiorElements.size() * 2) + (this.outlineElements.size() * 2) + (this.verticalElements.size() * 2);