protected BufferObject assembleVertexPoints(RenderContext rc, int numLat, int numLon, float altitude) { int count = numLat * numLon; float[] altitudes = new float[count]; Arrays.fill(altitudes, altitude); float[] points = new float[count * 3]; rc.globe.geographicToCartesianGrid(this.fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points, 0, 0); int size = points.length * 4; FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asFloatBuffer(); buffer.put(points).rewind(); return new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer); }
/** * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order * required by a triangle strip. * <p/> * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached * buffer object. * * @return the draw context's unit square OpenGL buffer object */ public BufferObject unitSquareBuffer() { if (this.unitSquareBuffer != null) { return this.unitSquareBuffer; } float[] points = new float[]{ 0, 1, // upper left corner 0, 0, // lower left corner 1, 1, // upper right corner 1, 0}; // lower right corner int size = points.length * 4; FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asFloatBuffer(); buffer.put(points).rewind(); BufferObject bufferObject = new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer); return (this.unitSquareBuffer = bufferObject); }
buffer.put(elements).rewind(); return new BufferObject(GLES20.GL_ELEMENT_ARRAY_BUFFER, size, buffer);
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)); } }
buffer.put(this.levelSetVertexTexCoords).rewind(); this.levelSetVertexTexCoordBuffer = rc.putBufferObject(this.levelSetVertexTexCoordKey, new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer)); buffer.rewind(); this.levelSetElementBuffer = rc.putBufferObject(this.levelSetElementKey, new BufferObject(GLES20.GL_ELEMENT_ARRAY_BUFFER, size, buffer));
ShortBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asShortBuffer(); buffer.put(elements.array(), 0, elements.size()); BufferObject elementBuffer = new BufferObject(GLES20.GL_ELEMENT_ARRAY_BUFFER, size, buffer.rewind()); elementBuffer.ranges.put(TOP_RANGE, topRange); elementBuffer.ranges.put(OUTLINE_RANGE, outlineRange);
FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asFloatBuffer(); buffer.put(this.vertexArray, 0, this.vertexArray.length); drawState.vertexBuffer = new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer.rewind()); rc.putBufferObject(this.vertexBufferKey, drawState.vertexBuffer);
FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asFloatBuffer(); buffer.put(this.vertexArray.array(), 0, this.vertexArray.size()); drawState.vertexBuffer = new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer.rewind()); rc.putBufferObject(this.vertexBufferKey, drawState.vertexBuffer); buffer.put(this.outlineElements.array(), 0, this.outlineElements.size()); buffer.put(this.verticalElements.array(), 0, this.verticalElements.size()); drawState.elementBuffer = new BufferObject(GLES20.GL_ELEMENT_ARRAY_BUFFER, size, buffer.rewind()); rc.putBufferObject(this.elementBufferKey, drawState.elementBuffer);
FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()).asFloatBuffer(); buffer.put(this.vertexArray.array(), 0, this.vertexArray.size()); drawState.vertexBuffer = new BufferObject(GLES20.GL_ARRAY_BUFFER, size, buffer.rewind()); rc.putBufferObject(this.vertexBufferKey, drawState.vertexBuffer); buffer.put(this.outlineElements.array(), 0, this.outlineElements.size()); buffer.put(this.verticalElements.array(), 0, this.verticalElements.size()); drawState.elementBuffer = new BufferObject(GLES20.GL_ELEMENT_ARRAY_BUFFER, size, buffer.rewind()); rc.putBufferObject(this.elementBufferKey, drawState.elementBuffer);