net.minecraft.client.renderer.vertex.VertexFormatElement类的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(9.4k)|赞(0)|评价(0)|浏览(73)

本文整理了Java中net.minecraft.client.renderer.vertex.VertexFormatElement类的一些代码示例,展示了VertexFormatElement类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。VertexFormatElement类的具体详情如下:
包路径:net.minecraft.client.renderer.vertex.VertexFormatElement
类名称:VertexFormatElement

VertexFormatElement介绍

暂无

代码示例

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

switch( element.getUsage() )
    break;
  case UV:
    if( element.getIndex() == 0 )
      break;
    else if( element.getIndex() == 1 )

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

public void setVertexFormat(
    VertexFormat format )
{
  hasLightMap = false;
  int eCount = format.getElementCount();
  for ( int x = 0; x < eCount; x++ )
  {
    VertexFormatElement e = format.getElement( x );
    if ( e.getUsage() == EnumUsage.UV && e.getIndex() == 1 && e.getType() == EnumType.SHORT )
    {
      hasLightMap = true;
    }
  }
  this.format = format;
}

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

@Override
protected void processQuad()
{
  VertexFormat format = this.parent.getVertexFormat();
  int count = format.getElementCount();
  for( int v = 0; v < 4; v++ )
  {
    for( int e = 0; e < count; e++ )
    {
      VertexFormatElement element = format.getElement( e );
      if( element.getUsage() == VertexFormatElement.EnumUsage.POSITION )
      {
        this.parent.put( e, this.transform( this.quadData[e][v], element.getElementCount() ) );
      }
      else if( element.getUsage() == VertexFormatElement.EnumUsage.NORMAL )
      {
        this.parent.put( e, this.transformNormal( this.quadData[e][v] ) );
      }
      else
      {
        this.parent.put( e, this.quadData[e][v] );
      }
    }
  }
}

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

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!" );
  }
}

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

@Override
protected void processQuad()
{
  VertexFormat format = this.parent.getVertexFormat();
  int count = format.getElementCount();
  for( int v = 0; v < 4; v++ )
  {
    for( int e = 0; e < count; e++ )
    {
      VertexFormatElement element = format.getElement( e );
      if( element.getUsage() == VertexFormatElement.EnumUsage.POSITION )
      {
        this.parent.put( e, this.transform( this.quadData[e][v] ) );
      }
      else if( element.getUsage() == VertexFormatElement.EnumUsage.NORMAL )
      {
        this.parent.put( e, this.transformNormal( this.quadData[e][v] ) );
      }
      else
      {
        this.parent.put( e, this.quadData[e][v] );
      }
    }
  }
}

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

if( element.getUsage() == VertexFormatElement.EnumUsage.NORMAL )
  normalType = element.getType();

代码示例来源:origin: OpenMods/OpenModsLib

final VertexFormatElement attr = vf.getElement(i);
final int offset = vf.getOffset(i);
final int count = attr.getElementCount();
final int constant = attr.getType().getGlConstant();
final int index = attr.getIndex();
final EnumUsage usage = attr.getUsage();

代码示例来源:origin: Direwolf20-MC/BuildingGadgets

@Override
public BufferBuilder pos(double x, double y, double z) {
  int i = this.vertexCount * this.vertexFormat.getNextOffset() + this.vertexFormat.getOffset(this.vertexFormatIndex);
  switch (this.vertexFormatElement.getType()) {
    case FLOAT:
      this.byteBuffer.putFloat(i, (float) (x + this.xOffset));
      this.byteBuffer.putFloat(i + 4, (float) (y + this.yOffset));
      this.byteBuffer.putFloat(i + 8, (float) (z + this.zOffset));
      break;
    case UINT:
    case INT:
      this.byteBuffer.putInt(i, Float.floatToRawIntBits((float) (x + this.xOffset)));
      this.byteBuffer.putInt(i + 4, Float.floatToRawIntBits((float) (y + this.yOffset)));
      this.byteBuffer.putInt(i + 8, Float.floatToRawIntBits((float) (z + this.zOffset)));
      break;
    case USHORT:
    case SHORT:
      this.byteBuffer.putShort(i, (short) ((int) (x + this.xOffset)));
      this.byteBuffer.putShort(i + 2, (short) ((int) (y + this.yOffset)));
      this.byteBuffer.putShort(i + 4, (short) ((int) (z + this.zOffset)));
      break;
    case UBYTE:
    case BYTE:
      this.byteBuffer.put(i, (byte) ((int) (x + this.xOffset)));
      this.byteBuffer.put(i + 1, (byte) ((int) (y + this.yOffset)));
      this.byteBuffer.put(i + 2, (byte) ((int) (z + this.zOffset)));
  }
  this.nextVertexFormatIndex();
  return this;
}

代码示例来源:origin: Vazkii/Botania

@Override
  public void put(int element, float... data) {
    VertexFormatElement formatElement = DefaultVertexFormats.ITEM.getElement(element);
    switch(formatElement.getUsage()) {
    case POSITION: {
      float[] newData = new float[4];
      Vector4f vec = new Vector4f(data);
      transform.getMatrix().transform(vec);
      vec.get(newData);
      parent.put(element, newData);
      break;
    }
    default: {
      parent.put(element, data);
      break;
    }
    }
  }
};

代码示例来源:origin: SleepyTrousers/EnderCore

switch (el.getUsage()) {
case COLOR:
 if (el.getType() == EnumType.FLOAT) {
  tes.color(v.r(), v.g(), v.b(), v.a());
 break;
case UV:
 if (el.getType() == EnumType.FLOAT && v.uv != null) {
  tes.tex(v.u(), v.v());

代码示例来源:origin: Direwolf20-MC/BuildingGadgets

@Override
public BufferBuilder normal(float x, float y, float z) {
  int i = this.vertexCount * this.vertexFormat.getNextOffset() + this.vertexFormat.getOffset(this.vertexFormatIndex);
  switch (this.vertexFormatElement.getType()) {
    case FLOAT:
      this.byteBuffer.putFloat(i, x);
      this.byteBuffer.putFloat(i + 4, y);
      this.byteBuffer.putFloat(i + 8, z);
      break;
    case UINT:
    case INT:
      this.byteBuffer.putInt(i, (int) x);
      this.byteBuffer.putInt(i + 4, (int) y);
      this.byteBuffer.putInt(i + 8, (int) z);
      break;
    case USHORT:
    case SHORT:
      this.byteBuffer.putShort(i, (short) ((int) (x * 32767) & 65535));
      this.byteBuffer.putShort(i + 2, (short) ((int) (y * 32767) & 65535));
      this.byteBuffer.putShort(i + 4, (short) ((int) (z * 32767) & 65535));
      break;
    case UBYTE:
    case BYTE:
      this.byteBuffer.put(i, (byte) ((int) (x * 127) & 255));
      this.byteBuffer.put(i + 1, (byte) ((int) (y * 127) & 255));
      this.byteBuffer.put(i + 2, (byte) ((int) (z * 127) & 255));
  }
  this.nextVertexFormatIndex();
  return this;
}

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

private void putVertex( UnpackedBakedQuad.Builder builder, Vec3d normal, double x, double y, double z, TextureAtlasSprite sprite, float u, float v )
{
  for( int e = 0; e < this.vertexFormat.getElementCount(); e++ )
  {
    switch( this.vertexFormat.getElement( e ).getUsage() )
    {
      case POSITION:
        builder.put( e, (float) x, (float) y, (float) z, 1.0f );
        break;
      case COLOR:
        builder.put( e, 1.0f, 1.0f, 1.0f, 1.0f );
        break;
      case UV:
        if( this.vertexFormat.getElement( e ).getIndex() == 0 )
        {
          u = sprite.getInterpolatedU( u );
          v = sprite.getInterpolatedV( v );
          builder.put( e, u, v, 0f, 1f );
          break;
        }
      case NORMAL:
        builder.put( e, (float) normal.x, (float) normal.y, (float) normal.z, 0f );
        break;
      default:
        builder.put( e );
        break;
    }
  }
}

代码示例来源:origin: Vazkii/Botania

@Override
  public void put(int element, float... data) {
    VertexFormatElement formatElement = DefaultVertexFormats.ITEM.getElement(element);
    switch(formatElement.getUsage()) {
    case POSITION: {
      float[] newData = new float[4];
      Vector4f vec = new Vector4f(data);
      transform.getMatrix().transform(vec);
      vec.get(newData);
      parent.put(element, newData);
      break;
    }
    default: {
      parent.put(element, data);
      break;
    }
    }
  }
};

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

@Override
public void put(
    final int element,
    final float... data )
{
  final VertexFormatElement e = getVertexFormat().getElement( element );
  if ( e.getUsage() == EnumUsage.UV && e.getIndex() == 1 && e.getType() == EnumType.SHORT && data.length >= 2 && hasLightMap )
  {
    final int lvFromData_sky = (int) ( data[0] / maxLightmap ) & 0xf;
    final int lvFromData_block = (int) ( data[1] / maxLightmap ) & 0xf;
    lv = Math.max( lvFromData_sky, lv );
    lv = Math.max( lvFromData_block, lv );
  }
}

代码示例来源:origin: RS485/LogisticsPipes

switch (el.getUsage()) {
  case COLOR:
    if (el.getType() == VertexFormatElement.EnumType.FLOAT) {
      tes.color(v.r(), v.g(), v.b(), v.a());
    break;
  case UV:
    if (el.getType() == VertexFormatElement.EnumType.FLOAT && v.uv != null) {
      tes.tex(v.u(), v.v());

代码示例来源:origin: ExtraCells/ExtraCells2

@Override
protected void processQuad() {
  VertexFormat format = parent.getVertexFormat();
  int count = format.getElementCount();
  for (int v = 0; v < 4; v++) {
    for (int e = 0; e < count; e++) {
      VertexFormatElement element = format.getElement(e);
      if (element.getUsage() == VertexFormatElement.EnumUsage.POSITION) {
        parent.put(e, transform(quadData[e][v], element.getElementCount()));
      } else if (element.getUsage() == VertexFormatElement.EnumUsage.NORMAL) {
        parent.put(e, transformNormal(quadData[e][v]));
      } else {
        parent.put(e, quadData[e][v]);
      }
    }
  }
}

代码示例来源:origin: Direwolf20-MC/BuildingGadgets

@Override
public BufferBuilder tex(double u, double v) {
  int i = this.vertexCount * this.vertexFormat.getNextOffset() + this.vertexFormat.getOffset(this.vertexFormatIndex);
  switch (this.vertexFormatElement.getType()) {
    case FLOAT:
      this.byteBuffer.putFloat(i, (float) u);
      this.byteBuffer.putFloat(i + 4, (float) v);
      break;
    case UINT:
    case INT:
      this.byteBuffer.putInt(i, (int) u);
      this.byteBuffer.putInt(i + 4, (int) v);
      break;
    case USHORT:
    case SHORT:
      this.byteBuffer.putShort(i, (short) ((int) v));
      this.byteBuffer.putShort(i + 2, (short) ((int) u));
      break;
    case UBYTE:
    case BYTE:
      this.byteBuffer.put(i, (byte) ((int) v));
      this.byteBuffer.put(i + 1, (byte) ((int) u));
  }
  this.nextVertexFormatIndex();
  return this;
}

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

switch( e.getUsage() )
    break;
  case UV:
    if( e.getIndex() == 0 )

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

@Override
public void put(
    final int element,
    final float... data )
{
  final VertexFormatElement e = getVertexFormat().getElement( element );
  if ( e.getUsage() == EnumUsage.POSITION )
  {
    if ( vertCount == 0 )
    {
      minSumX = data[0];
      minSumY = data[1];
      minSumZ = data[2];
      maxSumX = data[0];
      maxSumY = data[1];
      maxSumZ = data[2];
    }
    else
    {
      minSumX = Math.min( data[0], minSumX );
      minSumY = Math.min( data[1], minSumY );
      minSumZ = Math.min( data[2], minSumZ );
      maxSumX = Math.max( data[0], maxSumX );
      maxSumY = Math.max( data[1], maxSumY );
      maxSumZ = Math.max( data[2], maxSumZ );
    }
    ++vertCount;
  }
}

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

finalLengths[x] = format.getElement( x ).getElementCount();
indexLengths[x] = finalLengths[x];
switch ( format.getElement( x ).getUsage() )

相关文章