Skip to content

Commit

Permalink
clear vertexbuffer3D and fix related class. vertexCount property is n…
Browse files Browse the repository at this point in the history
…ot reasonable
  • Loading branch information
GuoLei1990 committed Sep 2, 2019
1 parent 6f5e5b6 commit 461fe97
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1482,7 +1482,7 @@ export class ShurikenParticleSystem extends GeometryElement implements IClone {
this._floatCountPerVertex = vertexDeclaration.vertexStride / 4;
this._startLifeTimeIndex = 12;
this._timeIndex = 16;
this._vertexStride = mesh._vertexBuffer.vertexCount;
this._vertexStride = mesh._vertexCount;
var totalVertexCount: number = this._bufferMaxParticles * this._vertexStride;
var vbCount: number = Math.floor(totalVertexCount / 65535) + 1;
var lastVBVertexCount: number = totalVertexCount % 65535;
Expand Down
25 changes: 4 additions & 21 deletions src/layaAir/laya/d3/graphics/VertexBuffer3D.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ export class VertexBuffer3D extends Buffer {
/**数据类型_Uint8Array类型。*/
static DATATYPE_UINT8ARRAY: number = 1;

/** @internal */
private _vertexCount: number = 0;
/** @internal */
private _canRead: boolean;

Expand All @@ -29,43 +27,28 @@ export class VertexBuffer3D extends Buffer {
return this._vertexDeclaration;
}

/**
* 获取顶点声明。
*/
set vertexDeclaration(value: VertexDeclaration) {
if (this._vertexDeclaration !== value) {
this._vertexDeclaration = value;
this._vertexCount = value ? this._byteLength / value.vertexStride : -1;//TODO:有问题,Buffer更换有问题
}
this._vertexDeclaration = value;
}

/**
* 获取顶点个数。
* @return 顶点个数。
*/
get vertexCount(): number {
return this._vertexCount;
}


/**
* 获取是否可读。
* @return 是否可读。
* 是否可读。
*/
get canRead(): boolean {
return this._canRead;
}

/**
* 创建一个 <code>VertexBuffer3D</code> 实例。
* @param vertexCount 顶点个数
* @param byteLength 字节长度
* @param bufferUsage VertexBuffer3D用途类型。
* @param canRead 是否可读。
* @param dateType 数据类型。
*/
constructor(byteLength: number, bufferUsage: number, canRead: boolean = false) {
super();
var gl: WebGLRenderingContext = LayaGL.instance;
this._vertexCount = -1;
this._bufferUsage = bufferUsage;
this._bufferType = gl.ARRAY_BUFFER;
this._canRead = canRead;
Expand Down
8 changes: 4 additions & 4 deletions src/layaAir/laya/d3/loaders/LoadModelV04.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ export class LoadModelV04 {
* @internal
*/
private static READ_MESH(): boolean {
var gl:WebGLRenderingContext=LayaGL.instance;
var gl: WebGLRenderingContext = LayaGL.instance;
var name: string = LoadModelV04._readString();
var arrayBuffer: ArrayBuffer = LoadModelV04._readData.__getBuffer();
var i: number, n: number;
Expand All @@ -121,7 +121,7 @@ export class LoadModelV04 {
for (i = 0; i < vertexBufferCount; i++) {//TODO:始终为1
var vbStart: number = offset + LoadModelV04._readData.getUint32();
var vbLength: number = LoadModelV04._readData.getUint32();
var vbArrayBuffer:ArrayBuffer=arrayBuffer.slice(vbStart, vbStart + vbLength);
var vbArrayBuffer: ArrayBuffer = arrayBuffer.slice(vbStart, vbStart + vbLength);
var vbDatas: Float32Array = new Float32Array(vbArrayBuffer);
var bufferAttribute: string = LoadModelV04._readString();
var vertexDeclaration: VertexDeclaration;
Expand All @@ -144,7 +144,7 @@ export class LoadModelV04 {
vertexBuffer.vertexDeclaration = vertexDeclaration;
vertexBuffer.setData(vbDatas.buffer);
LoadModelV04._mesh._vertexBuffer = vertexBuffer;
LoadModelV04._mesh._vertexCount += vertexBuffer.vertexCount;
LoadModelV04._mesh._vertexCount += vertexBuffer._byteLength / vertexDeclaration.vertexStride;
memorySize += vbDatas.length * 4;
}

Expand Down Expand Up @@ -198,7 +198,7 @@ export class LoadModelV04 {
var ibCount: number = LoadModelV04._readData.getUint32();
var indexBuffer: IndexBuffer3D = LoadModelV04._mesh._indexBuffer;
subMesh._indexBuffer = indexBuffer;
subMesh._setIndexRange(ibStart,ibCount);
subMesh._setIndexRange(ibStart, ibCount);
var vertexBuffer: VertexBuffer3D = LoadModelV04._mesh._vertexBuffer;
subMesh._vertexBuffer = vertexBuffer;

Expand Down
2 changes: 1 addition & 1 deletion src/layaAir/laya/d3/loaders/LoadModelV05.ts
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ export class LoadModelV05 {
vertexBuffer.vertexDeclaration = vertexDeclaration;
vertexBuffer.setData(vertexData);
LoadModelV05._mesh._vertexBuffer = vertexBuffer;
LoadModelV05._mesh._vertexCount += vertexBuffer.vertexCount;
LoadModelV05._mesh._vertexCount += vertexBuffer._byteLength / vertexDeclaration.vertexStride;
memorySize += floatData.length * 4;
}

Expand Down
2 changes: 1 addition & 1 deletion src/layaAir/laya/d3/resource/models/Mesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -713,7 +713,7 @@ export class Mesh extends Resource implements IClone {
destVB.vertexDeclaration = vb.vertexDeclaration;
destVB.setData(vb.getUint8Data().slice().buffer);
destMesh._vertexBuffer = destVB;
destMesh._vertexCount += destVB.vertexCount;
destMesh._vertexCount = this._vertexCount;
var ib: IndexBuffer3D = this._indexBuffer;
var destIB: IndexBuffer3D = new IndexBuffer3D(IndexBuffer3D.INDEXTYPE_USHORT, ib.indexCount, ib.bufferUsage, ib.canRead);
destIB.setData(ib.getData().slice());
Expand Down
6 changes: 3 additions & 3 deletions src/layaAir/laya/d3/resource/models/PrimitiveMesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { LayaGL } from "../../../layagl/LayaGL";
export class PrimitiveMesh {

static __init__(): void {

}

/**
Expand All @@ -30,7 +30,7 @@ export class PrimitiveMesh {
vertexBuffer.vertexDeclaration = vertexDeclaration;
vertexBuffer.setData(vertices.buffer);
mesh._vertexBuffer = vertexBuffer;
mesh._vertexCount += vertexBuffer.vertexCount;
mesh._vertexCount = vertexBuffer._byteLength / vertexDeclaration.vertexStride;
var indexBuffer: IndexBuffer3D = new IndexBuffer3D(IndexBuffer3D.INDEXTYPE_USHORT, indices.length, gl.STATIC_DRAW, true);
indexBuffer.setData(indices);
mesh._indexBuffer = indexBuffer;
Expand All @@ -41,7 +41,7 @@ export class PrimitiveMesh {

subMesh._vertexBuffer = vertexBuffer;
subMesh._indexBuffer = indexBuffer;
subMesh._setIndexRange(0,indexBuffer.indexCount);
subMesh._setIndexRange(0, indexBuffer.indexCount);

var subIndexBufferStart: number[] = subMesh._subIndexBufferStart;
var subIndexBufferCount: number[] = subMesh._subIndexBufferCount;
Expand Down

0 comments on commit 461fe97

Please sign in to comment.