private int findPositionOffset( VertexFormat format ) { List<VertexFormatElement> elements = format.getElements(); for( int i = 0; i < elements.size(); i++ ) { VertexFormatElement e = elements.get( i ); if( e.isPositionElement() ) { if( e.getType() != VertexFormatElement.EnumType.FLOAT ) { throw new IllegalArgumentException( "Only floating point positions are supported" ); } return i; } } throw new IllegalArgumentException( "Vertex format " + format + " has no position attribute!" ); } }
public void addQuad( EnumFacing face, float x1, float y1, float z1, float x2, float y2, float z2 ) { // If brightness is forced to specific values, extend the vertex format to contain the multi-texturing lightmap // offset VertexFormat savedFormat = null; if( this.renderFullBright ) { savedFormat = this.format; this.format = new VertexFormat( savedFormat ); if( !this.format.getElements().contains( DefaultVertexFormats.TEX_2S ) ) { this.format.addElement( DefaultVertexFormats.TEX_2S ); } } this.putFace( face, x1, y1, z1, x2, y2, z2 ); // Restore old format if( savedFormat != null ) { this.format = savedFormat; } }
for( int i = 0; i < format.getElements().size(); i++ )
int i = vertexformat.getNextOffset(); ByteBuffer bytebuffer = bufferBuilder.getByteBuffer(); List<VertexFormatElement> list = vertexformat.getElements();
@Override public void draw(VertexBuffer vertexBufferIn) { if (vertexBufferIn.getVertexCount() > 0) { GlStateManager.enableTexture2D(); OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); VertexFormat vertexformat = vertexBufferIn.getVertexFormat(); int i = vertexformat.getNextOffset(); ByteBuffer bytebuffer = vertexBufferIn.getByteBuffer(); List<VertexFormatElement> list = vertexformat.getElements(); for (int j = 0; j < list.size(); ++j) { bytebuffer.position(vertexformat.getOffset(j)); list.get(j).getUsage().preDraw(vertexformat, j, i, bytebuffer); } GlStateManager.glDrawArrays(vertexBufferIn.getDrawMode(), 0, vertexBufferIn.getVertexCount()); int i1 = 0; for (int j1 = list.size(); i1 < j1; ++i1) { list.get(i1).getUsage().postDraw(vertexformat, i1, i, bytebuffer); } } } }
private void postRenderChunk() { final List<VertexFormatElement> elements = DefaultVertexFormats.BLOCK.getElements(); for (final VertexFormatElement element : elements) { final VertexFormatElement.EnumUsage usage = element.getUsage(); final int index = element.getIndex(); switch (usage) { case POSITION: GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); break; case UV: OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + index); GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY); OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit); break; case COLOR: GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); GlStateManager.resetColor(); break; } } }
for (VertexFormatElement el : format.getElements()) { switch (el.getUsage()) { case COLOR:
for (VertexFormatElement el : format.getElements()) { switch (el.getUsage()) { case COLOR:
int i = vertexformat.getNextOffset(); ByteBuffer bytebuffer = bufferBuilder.getByteBuffer(); List<VertexFormatElement> list = vertexformat.getElements();
GlStateManager.resetColor(); for ( final VertexFormatElement vertexformatelement : DefaultVertexFormats.BLOCK.getElements() )
final TextureAtlasSprite sprite = face.getFrontOffsetY() != 0 ? still : flowing; for ( final VertexFormatElement e : buffer.getVertexFormat().getElements() )