public void submitBuild(ExecutorService executor, Supplier<BufferBuilder> builderSupplier, Consumer<BufferBuilder> builderReturn) { synchronized (this.buildLock) { this.builderResult = executor.submit(() -> { BufferBuilder builder = builderSupplier.get(); if (builder == null) { return null; } this.buildBlocks(builder); if (builder.getVertexCount() <= 0) { builder.finishDrawing(); builderReturn.accept(builder); return null; } return builder; }); } }
private Geometry buildGeometry(BufferBuilder builder) { if (builder == null || builder.getVertexCount() == 0) { if (builder != null) { builder.finishDrawing(); } return new EmptyGeometry(); } // TODO: Switch to VBO is GameSettings prefers it return this.buildDisplayList(builder); }
private static void renderVertexState(BufferBuilder.State data, BufferBuilder BufferBuilder, Tessellator tessellator, int brightness) { GL11.glPushMatrix(); BufferBuilder.begin(7, DefaultVertexFormats.BLOCK); BufferBuilder.setVertexState(data); int j = BufferBuilder.vertexFormat.getSize() >> 2; int cont = BufferBuilder.getVertexCount(); int offsetUV = BufferBuilder.vertexFormat.getUvOffsetById(1) / 4; int bufferNextSize = BufferBuilder.vertexFormat.getIntegerSize(); for (int contont = 0; contont < cont; contont += 4) { try { int i = (contont) * bufferNextSize + offsetUV; BufferBuilder.rawIntBuffer.put(i, brightness); BufferBuilder.rawIntBuffer.put(i + j, brightness); BufferBuilder.rawIntBuffer.put(i + j * 2, brightness); BufferBuilder.rawIntBuffer.put(i + j * 3, brightness); if (contont + 4 < cont) { contont += 4; i = (contont) * bufferNextSize + offsetUV; BufferBuilder.rawIntBuffer.put(i, brightness); BufferBuilder.rawIntBuffer.put(i + j, brightness); BufferBuilder.rawIntBuffer.put(i + j * 2, brightness); BufferBuilder.rawIntBuffer.put(i + j * 3, brightness); } } catch (Exception e) { e.printStackTrace(); } } tessellator.draw(); GL11.glPopMatrix(); }
@Override public GfxRenderState prepare( final Tessellator t ) { final int vc = t.getBuffer().getVertexCount(); if ( vc > 0 ) { return GfxRenderState.getNewState( vc ).prepare( t ); } t.getBuffer().finishDrawing(); return this; }
private void uploadDisplayList( final UploadTracker t ) { final BlockRenderLayer layer = t.layer; final TileLayerRenderCache tlrc = t.trc.getLayer( layer ); final Tessellator tx = t.getTessellator(); if ( tlrc.displayList == null ) { tlrc.displayList = GfxRenderState.getNewState( tx.getBuffer().getVertexCount() ); } tlrc.displayList = tlrc.displayList.prepare( tx ); t.submitForReuse(); }
final Tessellator t ) if ( t.getBuffer().getVertexCount() == 0 )
@Override public GfxRenderState prepare( final Tessellator t ) { if ( t.getBuffer().getVertexCount() == 0 ) { destroy(); return new VoidRenderState().prepare( t ); } destroy(); if ( vertexbuffer == null ) { vertexbuffer = new VertexBuffer( t.getBuffer().getVertexFormat() ); } t.getBuffer().finishDrawing(); vertexbuffer.bufferData( t.getBuffer().getByteBuffer() ); refreshNum = gfxRefresh; return this; }
buffer.addVertexData(vboCaches.get(layerID)); for (int i = 0; i < buffer.getVertexCount(); i++) { int idx = buffer.getColorIndex(i + 1); buffer.putColorRGBA(idx, 255, 255, 255, (int) (alpha * 255));