open source

This commit is contained in:
lvfulong
2020-11-11 16:17:13 +08:00
parent 4d989f3ecb
commit bc4ca748de
2441 changed files with 623057 additions and 2 deletions
+17
View File
@@ -0,0 +1,17 @@
{
// 使用 IntelliSense 以学习相关的 Node.js 调试属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "启动程序",
"program": "${file}",
"outFiles": [
"${workspaceRoot}/out/**/*.js"
]
}
]
}
+190
View File
@@ -0,0 +1,190 @@
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
// A task runner that calls the Typescript compiler (tsc) and
// Compiles a HelloWorld.ts program
{
"version": "0.1.0",
// The command is tsc. Assumes that tsc has been installed using npm install -g typescript
"command": "tsc",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// args is the HelloWorld program to compile.
"args": ["-p","."],
// use the standard tsc problem matcher to find compile problems
// in the output.
"problemMatcher": "$tsc"
}
// A task runner that calls the Typescript compiler (tsc) and
// compiles based on a tsconfig.json file that is present in
// the root of the folder open in VSCode
/*
{
"version": "0.1.0",
// The command is tsc. Assumes that tsc has been installed using npm install -g typescript
"command": "tsc",
// The command is a shell script
"isShellCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Tell the tsc compiler to use the tsconfig.json from the open folder.
"args": ["-p", "."],
// use the standard tsc problem matcher to find compile problems
// in the output.
"problemMatcher": "$tsc"
}
*/
// A task runner configuration for gulp. Gulp provides a less task
// which compiles less to css.
/*
{
"version": "0.1.0",
"command": "gulp",
"isShellCommand": true,
"tasks": [
{
"taskName": "less",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard less compilation problem matcher.
"problemMatcher": "$lessCompile"
}
]
}
*/
// Uncomment the following section to use jake to build a workspace
// cloned from https://github.com/Microsoft/TypeScript.git
/*
{
"version": "0.1.0",
// Task runner is jake
"command": "jake",
// Need to be executed in shell / cmd
"isShellCommand": true,
"showOutput": "silent",
"tasks": [
{
// TS build command is local.
"taskName": "local",
// Make this the default build command.
"isBuildCommand": true,
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the redefined Typescript output problem matcher.
"problemMatcher": [
"$tsc"
]
}
]
}
*/
// Uncomment the section below to use msbuild and generate problems
// for csc, cpp, tsc and vb. The configuration assumes that msbuild
// is available on the path and a solution file exists in the
// workspace folder root.
/*
{
"version": "0.1.0",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings
// and infos in the output.
"problemMatcher": "$msCompile"
}
]
}
*/
// Uncomment the following section to use msbuild which compiles Typescript
// and less files.
/*
{
"version": "0.1.0",
"command": "msbuild",
"args": [
// Ask msbuild to generate full paths for file names.
"/property:GenerateFullPaths=true"
],
"taskSelector": "/t:",
"showOutput": "silent",
"tasks": [
{
"taskName": "build",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Use the standard MS compiler pattern to detect errors, warnings
// and infos in the output.
"problemMatcher": [
"$msCompile",
"$lessCompile"
]
}
]
}
*/
// A task runner example that defines a problemMatcher inline instead of using
// a predefined one.
/*
{
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"args": ["HelloWorld.ts"],
"showOutput": "silent",
"problemMatcher": {
// The problem is owned by the typescript language service. Ensure that the problems
// are merged with problems produced by Visual Studio's language service.
"owner": "typescript",
// The file name for reported problems is relative to the current working directory.
"fileLocation": ["relative", "${cwd}"],
// The actual pattern to match problems in the output.
"pattern": {
// The regular expression. Matches HelloWorld.ts(2,10): error TS2339: Property 'logg' does not exist on type 'Console'.
"regexp": "^([^\\s].*)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\):\\s+(error|warning|info)\\s+(TS\\d+)\\s*:\\s*(.*)$",
// The match group that denotes the file containing the problem.
"file": 1,
// The match group that denotes the problem location.
"location": 2,
// The match group that denotes the problem's severity. Can be omitted.
"severity": 3,
// The match group that denotes the problem code. Can be omitted.
"code": 4,
// The match group that denotes the problem's message.
"message": 5
}
}
}
*/
+2
View File
@@ -0,0 +1,2 @@
///<reference path="../domsupport/ES6NoDOM.d.ts" />
//开发期间,先直接引用定义文件。
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "system",
"noLib": true,
"target": "es6",
"noImplicitAny": false,
"rootDir": ".",
"removeComments": true,
"sourceMap": false,
"outFile": "../../../Redist/scripts/webglPlus.js"
},
"files": [
"webglPlus.ts"
]
}
+613
View File
@@ -0,0 +1,613 @@
///<reference path="./LayaConchRuntime.d.ts" />
///<reference path="../domsupport/ES6NoDOM.d.ts" />
/**
* name
*/
enum UNIFORM_TYPE
{
//native用的shaderUniform的函数ID
INTERIOR_UNIFORM1F = 0,
INTERIOR_UNIFORM1FV,
INTERIOR_UNIFORM1I,
INTERIOR_UNIFORM1IV,
INTERIOR_UNIFORM2F,
INTERIOR_UNIFORM2FV,
INTERIOR_UNIFORM2I,
INTERIOR_UNIFORM2IV,
INTERIOR_UNIFORM3F,
INTERIOR_UNIFORM3FV,
INTERIOR_UNIFORM3I,
INTERIOR_UNIFORM3IV,
INTERIOR_UNIFORM4F,
INTERIOR_UNIFORM4FV,
INTERIOR_UNIFORM4I,
INTERIOR_UNIFORM4IV,
INTERIOR_UNIFORMMATRIX2FV,
INTERIOR_UNIFORMMATRIX3FV,
INTERIOR_UNIFORMMATRIX4FV,
INTERIOR_UNIFORMSAMPLER_2D,
INTERIOR_UNIFORMSAMPLER_CUBE,
}
//传入ArrayBufferType
enum ARRAY_BUFFER_PARAM_TYPE
{
ARRAY_BUFFER_REF_REFERENCE = 0,
ARRAY_BUFFER_REF_COPY = 1,
}
//uploadShaderUniformType
enum UPLOAD_SHADER_UNIFORM_TYPE
{
UPLOAD_SHADER_UNIFORM_TYPE_ID = 0, //data按照ID传入
UPLOAD_SHADER_UNIFORM_TYPE_DATA = 1, //data按照数据传入
}
enum ARRAY_BUFFER_TYPE
{
ARRAY_BUFFER_TYPE_DATA = 0, //创建ArrayBuffer时的类型为Data
ARRAY_BUFFER_TYPE_CMD = 1, //创建ArrayBuffer时的类型为Command
}
declare var window:Window;
class conchFloatArrayKeyframe
{
_nativeObj:_conchFloatArrayKeyframe;
_inTangent:Float32Array;
_outTangent:Float32Array;
_value:Float32Array;
_data:Float32Array;
constructor()
{
this._nativeObj = new _conchFloatArrayKeyframe();
}
set time(value:number)
{
this._nativeObj.setTime(value);
}
get time():number
{
return this._nativeObj.getTime();
}
set data(value:Float32Array)
{
this._data=value;
this._nativeObj.setData(value);
}
get data()
{
return this._data;
}
set inTangent(value:Float32Array)
{
this._inTangent=value;
this._nativeObj.setInTangent(this._inTangent);
}
get inTangent()
{
return this._inTangent;
}
set outTangent(value:Float32Array)
{
this._outTangent=value;
this._nativeObj.setOutTangent(this._outTangent);
}
get outTangent()
{
return this._outTangent;
}
set value(v:Float32Array)
{
this._value=v;
this._nativeObj.setValue(this._value);
}
get value()
{
return this._value;
}
clone()
{
let pDestObj:conchFloatArrayKeyframe = new conchFloatArrayKeyframe();
this.cloneTo(pDestObj);
return pDestObj;
}
cloneTo(destObj:conchFloatArrayKeyframe)
{
destObj.inTangent = this._inTangent.slice() as Float32Array;
destObj.outTangent = this._outTangent.slice() as Float32Array;
destObj.value = this._value.slice() as Float32Array;
destObj.data = this._data.slice() as Float32Array;
}
}
window["conchFloatArrayKeyframe"]=conchFloatArrayKeyframe;
class conchKeyframeNode
{
_nativeObj:_conchKeyframeNode;
_data:any;
_keyFrameArray:Array<any> = [];
_type:number = 0;
constructor()
{
this._nativeObj = new _conchKeyframeNode();
}
set data(value:any)
{
this._data = value;
this._nativeObj.setFloat32ArrayData(this._data.elements);//ConchVector3 or ConchQuaternion
}
get data()
{
//优化
//return this._nativeObj.getDataType()==0 ? this._nativeObj.getFloatData() : this._data;
return this._type == 0 ? this._nativeObj.getFloatData() : this._data;
}
get indexInList()
{
return this._nativeObj._indexInList;
}
set indexInList(value:number)
{
this._nativeObj._indexInList = value;
}
get type()
{
return this._type;
}
set type(type:number)
{
this._type = type;
this._nativeObj.type = type;
}
get fullPath()
{
return this._nativeObj.fullPath;
}
set fullPath(path:string)
{
this._nativeObj.fullPath = path;
}
get propertyOwner()
{
return this._nativeObj.propertyOwner;
}
set propertyOwner(value:string)
{
this._nativeObj.propertyOwner = value;
}
get ownerPathCount()
{
return this._nativeObj.ownerPathCount;
}
set ownerPathCount(value:number)
{
this._nativeObj.ownerPathCount = value;
}
get propertyCount()
{
return this._nativeObj.propertyCount;
}
set propertyCount(value:number)
{
this._nativeObj.propertyCount = value;
}
get keyFramesCount()
{
return this._keyFrameArray.length;
}
set keyFramesCount(value:number)
{
this._keyFrameArray.length = value;
this._nativeObj.keyFramesCount = value;
}
getOwnerPathCount()
{
return this._nativeObj.getOwnerPathCount();
}
_setOwnerPathCount(value:number)
{
this._nativeObj._setOwnerPathCount(value);
}
getPropertyCount()
{
return this._nativeObj.getPropertyCount();
}
_setPropertyCount(value:number)
{
this._nativeObj._setPropertyCount(value);
}
getKeyFramesCount()
{
return this._keyFrameArray.length;
}
_setKeyframeCount(value:number)
{
this._keyFrameArray.length = value;
this._nativeObj._setKeyframeCount(value);
}
getOwnerPathByIndex(index:number)
{
return this._nativeObj.getOwnerPathByIndex(index)
}
_setOwnerPathByIndex(index:number, value:string)
{
this._nativeObj._setOwnerPathByIndex(index, value);
}
getPropertyByIndex(index:number)
{
return this._nativeObj.getPropertyByIndex(index);
}
_setPropertyByIndex(index:number, value:string)
{
this._nativeObj._setPropertyByIndex(index, value)
}
getKeyframeByIndex(index:number)
{
return this._nativeObj.getKeyframeByIndex(index);
}
_joinOwnerPath(sep:string)
{
return this._nativeObj._joinOwnerPath(sep);
}
_joinProperty(sep:string)
{
return this._nativeObj._joinProperty(sep);
}
_setKeyframeByIndex=function(index:number,keyframe:any)
{
this._keyFrameArray[index] = keyframe;
if( keyframe instanceof(conchFloatArrayKeyframe) )
{
this._nativeObj._setKeyframeByIndex1(index,keyframe._nativeObj);
}
else
{
this._nativeObj._setKeyframeByIndex0(index,keyframe);
}
}
}
window["conchKeyframeNode"]=conchKeyframeNode;
class conchKeyframeNodeList
{
_nativeObj:_conchKeyframeNodeList;
_nodes:Array<conchKeyframeNode> = [];
constructor()
{
this._nativeObj = new _conchKeyframeNodeList();
}
set count(value:number)
{
this._nodes.length = value;
this._nativeObj.setCount(value);
}
get count()
{
return this._nodes.length;
}
getNodeByIndex(index:number)
{
return this._nodes[index];
}
setNodeByIndex(index:number,node:conchKeyframeNode)
{
this._nodes[index] = node;
this._nativeObj.setNodeByIndex(index,node._nativeObj);
}
}
window["conchKeyframeNodeList"] = conchKeyframeNodeList;
class _GLCommandEncoder
{
private static readonly INT = 0x1404;
private static readonly FLOAT = 0x1406;
private static readonly FLOAT_VEC2 = 0x8B50;
private static readonly FLOAT_VEC3 = 0x8B51;
private static readonly FLOAT_VEC4 = 0x8B52;
private static readonly INT_VEC2 = 0x8B53;
private static readonly INT_VEC3 = 0x8B54;
private static readonly INT_VEC4 = 0x8B55;
private static readonly BOOL = 0x8B56;
private static readonly BOOL_VEC2 = 0x8B57;
private static readonly BOOL_VEC3 = 0x8B58;
private static readonly BOOL_VEC4 = 0x8B59;
private static readonly FLOAT_MAT2 = 0x8B5A;
private static readonly FLOAT_MAT3 = 0x8B5B;
private static readonly FLOAT_MAT4 = 0x8B5C;
private static readonly SAMPLER_2D = 0x8B5E;
private static readonly SAMPLER_CUBE = 0x8B60;
public _idata:Int32Array;
public _fdata:Float32Array;
public _byteArray:Uint8Array;
public _buffer:ArrayBuffer;
private _adjustSize:number = 0;
private _byteLen:number = 0;
private _layagl:any;
public _isSyncToRenderThread:Boolean = false;
constructor(gl:any, reserveSize:number, adjustSize:number, isSyncToRenderThread:boolean)
{
this._isSyncToRenderThread = isSyncToRenderThread;
this._layagl = gl;
this._byteLen = reserveSize;
this._adjustSize = adjustSize;
this._init(isSyncToRenderThread);
}
_init(isSyncToRenderThread:boolean):void
{
this._buffer = new ArrayBuffer(this._byteLen);
this._idata = new Int32Array(this._buffer);
this._fdata = new Float32Array(this._buffer);
this._byteArray = new Uint8Array(this._buffer);
this._layagl.createArrayBufferRef(this._buffer, ARRAY_BUFFER_TYPE.ARRAY_BUFFER_TYPE_CMD, isSyncToRenderThread);
this._idata[0] = 1;
}
getAlignLength(data:any):number{
var byteLength = data.byteLength;
return (byteLength + 3) & 0xfffffffc;
}
getPtrID():number
{
return this._buffer["_ptrID"];
}
clearEncoding():void
{
this._idata[0] = 1;
}
getCount():number
{
return this._idata[0];
}
_need(sz:number):void
{
if ((this._byteLen - (this._idata[0] << 2)) >= sz) return;
this._byteLen += (sz > this._adjustSize) ? sz : this._adjustSize;
var pre:Int32Array = this._idata;
var preConchRef:any = this._buffer["conchRef"];
var prePtrID:number = this._buffer["_ptrID"];
this._buffer = new ArrayBuffer(this._byteLen);
this._idata = new Int32Array(this._buffer);
this._fdata = new Float32Array(this._buffer);
this._byteArray = new Uint8Array(this._buffer);
this._buffer["conchRef"] = preConchRef;
this._buffer["_ptrID"] = prePtrID;
pre && this._idata.set(pre, 0);
webglPlus.updateArrayBufferRef(this._buffer["_ptrID"], preConchRef.isSyncToRender(), this._buffer);
}
addShaderUniform(one:any):void
{
var funID:number = 0;
var isArray:Boolean = one.isArray;
switch (one.type)
{
case _GLCommandEncoder.INT:
funID = isArray ? UNIFORM_TYPE.INTERIOR_UNIFORM1IV : UNIFORM_TYPE.INTERIOR_UNIFORM1I;
break;
case _GLCommandEncoder.FLOAT:
funID = isArray ? UNIFORM_TYPE.INTERIOR_UNIFORM1FV : UNIFORM_TYPE.INTERIOR_UNIFORM1F;
break;
case _GLCommandEncoder.FLOAT_VEC2:
funID = isArray ? UNIFORM_TYPE.INTERIOR_UNIFORM2FV : UNIFORM_TYPE.INTERIOR_UNIFORM2F;
break;
case _GLCommandEncoder.FLOAT_VEC3:
funID = isArray ? UNIFORM_TYPE.INTERIOR_UNIFORM3FV : UNIFORM_TYPE.INTERIOR_UNIFORM3F;
break;
case _GLCommandEncoder.FLOAT_VEC4:
funID = isArray ? UNIFORM_TYPE.INTERIOR_UNIFORM4FV : UNIFORM_TYPE.INTERIOR_UNIFORM4F;
break;
case _GLCommandEncoder.SAMPLER_2D:
funID = UNIFORM_TYPE.INTERIOR_UNIFORMSAMPLER_2D;
break;
case _GLCommandEncoder.SAMPLER_CUBE:
funID = UNIFORM_TYPE.INTERIOR_UNIFORMSAMPLER_CUBE;
break;
case _GLCommandEncoder.FLOAT_MAT4:
funID = UNIFORM_TYPE.INTERIOR_UNIFORMMATRIX4FV;
break;
case _GLCommandEncoder.BOOL:
funID = UNIFORM_TYPE.INTERIOR_UNIFORM1I;
break;
case _GLCommandEncoder.FLOAT_MAT2:
funID = UNIFORM_TYPE.INTERIOR_UNIFORMMATRIX2FV;
break;
case _GLCommandEncoder.FLOAT_MAT3:
funID = UNIFORM_TYPE.INTERIOR_UNIFORMMATRIX3FV;
break;
default:
throw new Error("compile shader err!");
}
//同步ArrayBufferList
this._layagl.syncBufferToRenderThread(this._buffer);
//第二个参数3 就是函数ID = FUNCTION_ID.ADDSHADERUNIFORM
this.add_iiiiii(3, funID, one.location.id, one.type, one.dataOffset, one.textureID);
}
add_iiiiii(a:number, b:number, c:number, d:number, e:number, f:number):void
{
this._need(24);
var idata:Int32Array = this._idata;
var i:number = idata[0];
idata[i++] = a;
idata[i++] = b;
idata[i++] = c;
idata[i++] = d;
idata[i++] = e;
idata[i++] = f;
idata[0] = i;
}
}
function extendWebGLPlusToWebGLContext(gl:any)
{
gl.prototype.createArrayBufferRef=function(arrayBuffer:any, type:number, syncRender:boolean):any
{
var bufferConchRef:any = webglPlus.createArrayBufferRef(arrayBuffer, type, syncRender, ARRAY_BUFFER_PARAM_TYPE.ARRAY_BUFFER_REF_REFERENCE);
arrayBuffer["conchRef"] = bufferConchRef;
arrayBuffer["_ptrID"] = bufferConchRef.id;
return bufferConchRef;
}
gl.prototype.createArrayBufferRefs=function(arrayBuffer:any, type:number, syncRender:boolean, refType:number):any
{
if( !arrayBuffer._refArray )
{
arrayBuffer._refArray = [];
arrayBuffer._refNum = 1;
arrayBuffer._refArray.length = 1;
arrayBuffer.getRefNum=function()
{
return this._refNum;
}
arrayBuffer.clearRefNum=function()
{
this._refNum = 1;
}
arrayBuffer.getRefSize=function()
{
return this._refArray.length;
}
arrayBuffer.getPtrID=function(index)
{
index = index ? index : 0;
return this._refArray[index].ptrID;
}
}
var bufferConchRef:any = null;
if( refType == ARRAY_BUFFER_PARAM_TYPE.ARRAY_BUFFER_REF_REFERENCE)
{
var refArray:any = arrayBuffer._refArray;
if( !refArray[0] )
{
bufferConchRef = webglPlus.createArrayBufferRef(arrayBuffer, type, syncRender, refType);
refArray[0] = {"ref":bufferConchRef,"ptrID":bufferConchRef.id};
}
}
else
{
if( arrayBuffer._refNum < arrayBuffer._refArray.length )
{
bufferConchRef = arrayBuffer._refArray[arrayBuffer._refNum].ref;
var nPtrID:number = arrayBuffer.getPtrID(arrayBuffer._refNum);
webglPlus.syncArrayBufferDataToRuntime(nPtrID,bufferConchRef.isSyncToRender(),arrayBuffer);
}
else
{
bufferConchRef = webglPlus.createArrayBufferRef(arrayBuffer, type, syncRender, refType);
arrayBuffer._refArray.push( {"ref":bufferConchRef,"ptrID":bufferConchRef.id});
}
arrayBuffer._refNum++;
}
return bufferConchRef;
}
gl.prototype.updateArrayBufferRef=function(bufferID:number,isSyncToRender:boolean, buffer:any):any
{
return webglPlus.updateArrayBufferRef(bufferID,isSyncToRender,buffer);
}
gl.prototype.updateAnimationNodeWorldMatix=function(locPosition, locRotation, locScaling, parentIndices, outWorldMatrix)
{
return webglPlus.updateAnimationNodeWorldMatix(locPosition, locRotation, locScaling, parentIndices, outWorldMatrix);
}
gl.prototype.computeSubSkinnedData=function(worldMatrixs, worldMatrixIndex, inverseBindPoses,boneIndices, bindPoseInices, resultData)
{
return webglPlus.computeSubSkinnedData(worldMatrixs, worldMatrixIndex, inverseBindPoses,boneIndices, bindPoseInices, resultData);
}
gl.prototype.evaluateClipDatasRealTime=function(nodes:any, playCurTime:number, realTimeCurrentFrameIndexs:any, addtive:boolean, frontPlay:boolean)
{
webglPlus.evaluateClipDatasRealTime(nodes,playCurTime,realTimeCurrentFrameIndexs,addtive, frontPlay);
}
gl.prototype.culling=function(boundFrustumBuffer:Float32Array,cullingBuffer:Float32Array, cullingBufferIndices:Int32Array, cullingCount:number, cullingBufferResult:Int32Array):number
{
return webglPlus.culling(boundFrustumBuffer,cullingBuffer, cullingBufferIndices, cullingCount,cullingBufferResult);
}
if(!window["conch"])
{
gl.prototype.createCommandEncoder=function(reserveSize?:number, adjustSize?:number, isSyncToRenderThread?:boolean):any
{
reserveSize=reserveSize?reserveSize:128;
adjustSize=adjustSize?adjustSize:64;
isSyncToRenderThread=isSyncToRenderThread?isSyncToRenderThread:false;
var cmd:_GLCommandEncoder = new _GLCommandEncoder(this, reserveSize, adjustSize, isSyncToRenderThread );
if(isSyncToRenderThread)
{
this.syncBufferToRenderThread(cmd);
}
return cmd;
}
window["GLCommandEncoder"] = _GLCommandEncoder;
gl.prototype.syncBufferToRenderThread=function(value:any,index:number=0)
{
//不用处理
}
}
if(!window["conch"])
{
gl.prototype.uploadShaderUniforms=function(commandEncoder:any, data:any, type:number):number
{
if(type==UPLOAD_SHADER_UNIFORM_TYPE.UPLOAD_SHADER_UNIFORM_TYPE_ID)
{
var dataID:number = data["_ptrID"];
this.syncBufferToRenderThread(data);
//TODO 这个地方平台方自己处理,如果压流就需要按照压流的来,如果直接调用可以直接调用
//压流
//this.add_iii(FUNCTION_ID.UPLOADSHADERUNIFORMS, commandEncoder._buffer["_ptrID"], dataID);
//直接调用
//webglPlus.uploadShaderUniforms(commandEncoder._buffer["_ptrID"], dataID);
}
else
{
var nAlignLength = this.getAlignLength(data);
//TODO 这个地方平台方自己处理,如果压流就需要按照压流的来,如果直接调用可以直接调用
//压流
//this.add_ii(FUNCTION_ID.UPLOADSHADERUNIFORMS_BUFFER, commandEncoder._buffer["_ptrID"]);
//this.wab(data, data.byteLength, nAlignLength);
//直接调用
/*var copyAb = new ArrayBuffer(data.byteLength);
var copyVi = new Uint8Array(copyAb);
var vi = new Uint8Array(data);
copyVi.set(vi);
webglPlus.uploadShaderUniforms(commandEncoder._buffer["_ptrID"],copyAb);*/
}
return 0;
}
gl.prototype.uniformMatrix2fvEx=function(location:any, transpose:any, value:any):void
{
if (!value["_ptrID"])
{
this.createArrayBufferRef(value, ARRAY_BUFFER_TYPE.ARRAY_BUFFER_TYPE_DATA, true);
}
var nID:number = value["_ptrID"];
this.syncBufferToRenderThread(value);
//TODO 这个地方平台方自己处理,如果压流就需要按照压流的来,如果直接调用可以直接调用
//压流
//this.add_iiii(FUNCTION_ID.UNIFORMMATRIX2FVEX, location, transpose, nID);
//直接调用
//webglPlus.uniformMatrix2fvEx(location.id, transpose, nID);
}
gl.prototype.uniformMatrix3fvEx=function(location:any, transpose:any, value:any):void
{
if (!value["_ptrID"])
{
this.createArrayBufferRef(value, ARRAY_BUFFER_TYPE.ARRAY_BUFFER_TYPE_DATA, true);
}
var nID:number = value["_ptrID"];
this.syncBufferToRenderThread(value);
//TODO 这个地方平台方自己处理,如果压流就需要按照压流的来,如果直接调用可以直接调用
//压流
//this.add_iiii(FUNCTION_ID.UNIFORMMATRIX3FVEX, location, transpose, nID);
//直接调用
//webglPlus.uniformMatrix3fvEx(location.id, transpose, nID);
}
gl.prototype.uniformMatrix4fvEx=function(location:any, transpose:any, value:any):void
{
if (!value["_ptrID"])
{
this.createArrayBufferRef(value, ARRAY_BUFFER_TYPE.ARRAY_BUFFER_TYPE_DATA, true);
}
var nID:number = value["_ptrID"];
this.syncBufferToRenderThread(value);
//TODO 这个地方平台方自己处理,如果压流就需要按照压流的来,如果直接调用可以直接调用
//压流
//this.add_iiii(FUNCTION_ID.UNIFORMMATRIX4FVEX, location, transpose, nID);
//直接调用
//webglPlus.uniformMatrix4fvEx(location.id, transpose, nID);
}
}
}
window["extendWebGLPlusToWebGLContext"]=extendWebGLPlusToWebGLContext;