public static void pack(float[] from, int[] to, VertexFormat formatTo, int v, int e)
{
VertexFormatElement element = formatTo.getElement(e);
int vertexStart = v * formatTo.getNextOffset() + formatTo.getOffset(e);
int count = element.getElementCount();
VertexFormatElement.EnumType type = element.getType();
int size = type.getSize();
int mask = (256 << (8 * (size - 1))) - 1;
for(int i = 0; i < 4; i++)
{
if(i < count)
{
int pos = vertexStart + size * i;
int index = pos >> 2;
int offset = pos & 3;
int bits = 0;
float f = i < from.length ? from[i] : 0;
if(type == VertexFormatElement.EnumType.FLOAT)
{
bits = Float.floatToRawIntBits(f);
}
else if(
type == VertexFormatElement.EnumType.UBYTE ||
type == VertexFormatElement.EnumType.USHORT ||
type == VertexFormatElement.EnumType.UINT
)
{
bits = (int)(f * mask);
}
else
{
bits = (int)(f * mask / 2);
}
to[index] &= ~(mask << (offset * 8));
to[index] |= (((bits & mask) << (offset * 8)));
// TODO handle overflow into to[index + 1]
}
}
}
LightUtil.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:CustomWorldGen
作者:
评论列表
文章目录