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
@@ -0,0 +1,59 @@
/**
@file JCIDGenerator.cpp
@brief
@author James
@version 1.0
@date 2016_5_12
*/
#include "JCIDGenerator.h"
namespace laya
{
JCIDGenerator::JCIDGenerator()
{
}
JCIDGenerator::~JCIDGenerator()
{
}
bool JCIDGenerator::deleteID(GLuint nFakeID)
{
//只设置为无效,不从vector中删除
if (nFakeID >= 0 && nFakeID < m_vIDTable.size())
{
m_vIDTable[nFakeID] = 0;
}
return true;
}
bool JCIDGenerator::setRealID(GLuint nFakeID,GLuint nRealID)
{
if (nFakeID == m_vIDTable.size())
{
m_vIDTable.push_back(nRealID);
}
else if (nFakeID > m_vIDTable.size())
{
int nLastSize = m_vIDTable.size();
m_vIDTable.resize(nFakeID +1);
//把中间的空的,全部填充成无效的
for (int i = nLastSize,n=m_vIDTable.size(); i < n; i++)
{
m_vIDTable[i] = 0;
}
m_vIDTable[nFakeID] = nRealID;
}
else
{
m_vIDTable[nFakeID] = nRealID;
}
return true;
}
void JCIDGenerator::reset()
{
m_vIDTable.clear();
}
}
//------------------------------------------------------------------------------
//-----------------------------END FILE--------------------------------
@@ -0,0 +1,53 @@
/**
@file JCIDGenerator.h
@brief
@author James
@version 1.0
@date 2016_5_12
*/
#ifndef __JCIDGenerator_H__
#define __JCIDGenerator_H__
#include <string>
#include "util/Log.h"
#include <vector>
#if __APPLE__
#include <OpenGLES/ES3/gl.h>
#else
#include <GLES3/gl3.h>
#endif
namespace laya
{
class JCIDGenerator
{
public:
JCIDGenerator();
~JCIDGenerator();
bool deleteID(GLuint nFakeID);
bool setRealID(GLuint fakeID,GLuint realID);
GLuint getRealID(GLuint fakeID)
{
return fakeID < m_vIDTable.size() ? m_vIDTable[fakeID] : 0;
}
void reset();
protected:
std::vector<GLuint> m_vIDTable;
};
}
//------------------------------------------------------------------------------
#endif //__JCIDGenerator_H__
//-----------------------------END FILE--------------------------------
File diff suppressed because it is too large Load Diff
+249
View File
@@ -0,0 +1,249 @@
/**
@file JCLayaGL.h
@brief
@author James
@version 1.0
@date 2018_5_25
*/
#ifndef __JCLayaGL_H__
#define __JCLayaGL_H__
#include <string>
#include <vector>
#include <list>
#include <unordered_map>
#if __APPLE__
#include <OpenGLES/ES3/gl.h>
#else
#include <GLES3/gl3.h>
#endif
#include "../Image/JCImageManager.h"
#include "JCIDGenerator.h"
#include <Manager/JCArrayBufferManager.h>
#include "../RenderEx/JCGlobalValue.h"
#include "../Manager/JCOrderResManager.h"
#include "../RenderEx/JCRegister.h"
#include <buffer/JCCommandEncoderBuffer.h>
//1024*1024*4
#define TEX_IMAGE2D_DUMMY_MAX_SIZE 4194304
namespace laya
{
typedef GLuint WebGLShader;
typedef GLuint WebGLProgram;
typedef GLuint WebGLBuffer;
typedef GLuint WebGLFramebuffer;
typedef GLuint WebGLRenderbuffer;
typedef GLuint WebGLTexture;
typedef GLuint WebGLUniformLocation;
class JCWebGLPlus;
/**
* @brief
*/
class JCLayaGL
{
public:
JCLayaGL(int nWidth,int nHeight,JCArrayBufferManager* pArrayBuferManager, JCImageManager* pImageManager,JCIDGenerator* pIDGenerator,JCIDGenerator* pProgramLocationTable,JCRegister* pRegister,JCWebGLPlus* pWebGLPlus);
static void _texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels);
static void _createVertexArray(GLuint& vao);
static void _bindVertexArray(GLuint vao);
static void _deleteVertexArray(GLuint& vao);
virtual ~JCLayaGL();
virtual bool isContextLost();
virtual void* getExtension(const std::string& name);
virtual void activeTexture(GLenum texture);
virtual void attachShader(WebGLProgram program, WebGLShader shader);
virtual void bindAttribLocation(WebGLProgram program, GLuint index, const std::string& name);
virtual void bindBuffer(GLenum target, WebGLBuffer buffer);
virtual void bindFramebuffer(GLenum target, WebGLFramebuffer framebuffer);
virtual void bindRenderbuffer(GLenum target, WebGLRenderbuffer renderbuffer);
virtual void bindTexture(GLenum target, WebGLTexture texture);
virtual void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
virtual void blendEquation(GLenum mode);
virtual void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
virtual void blendFunc(GLenum sfactor, GLenum dfactor);
virtual void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
virtual void bufferData_size(GLenum target, GLsizeiptr size, GLenum usage);
virtual void bufferData(GLenum target, int dataSize, char* data, GLenum usage);
virtual void bufferSubData(GLenum target, GLintptr offset,int dataSize, char* data);
virtual GLenum checkFramebufferStatus(GLenum target);
virtual void clear(GLbitfield mask);
virtual void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
virtual void clearDepth(GLclampf depth);
virtual void clearStencil(GLint s);
virtual void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
virtual void compileShader(WebGLShader shader);
virtual void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,GLsizei width, GLsizei height, GLint border,int dataSize,char* data);
virtual void compressedTexSubImage2D(GLenum target, GLint level,GLint xoffset, GLint yoffset,GLsizei width, GLsizei height, GLenum format, int dataSize,char* data );
virtual void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
virtual void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
virtual WebGLBuffer createBuffer(int fakeID);
virtual WebGLFramebuffer createFramebuffer(int fakeID);
virtual WebGLProgram createProgram(int fakeID);
virtual WebGLRenderbuffer createRenderbuffer(int fakeID);
virtual WebGLShader createShader(int fakeID,GLenum type);
virtual WebGLTexture createTexture(int fakeID);
virtual void cullFace(GLenum mode);
virtual void deleteBuffer(WebGLBuffer buffer);
virtual void deleteFramebuffer(WebGLFramebuffer framebuffer);
virtual void deleteProgram(WebGLProgram program);
virtual void deleteRenderbuffer(WebGLRenderbuffer renderbuffer);
virtual void deleteShader(WebGLShader shader);
virtual void deleteTexture(WebGLTexture texture);
virtual void depthFunc(GLenum func);
virtual void depthMask(GLboolean flag);
virtual void depthRange(GLclampf zNear, GLclampf zFar);
virtual void detachShader(WebGLProgram program, WebGLShader shader);
virtual void disable(GLenum cap);
virtual void disableVertexAttribArray(GLuint index);
virtual void drawArrays(GLenum mode, GLint first, GLsizei count);
virtual void drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
virtual void enable(GLenum cap);
virtual void enableVertexAttribArray(GLuint index);
virtual void finish();
virtual void flush();
virtual void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer renderbuffer);
virtual void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture texture, GLint level);
virtual void frontFace(GLenum mode);
virtual void generateMipmap(GLenum target);
virtual GLint getAttribLocation(WebGLProgram program,const std::string& name);
virtual GLint getBufferParameter(GLenum target, GLenum pname);
virtual GLint getParameter(GLenum pname,int fakeID);
virtual GLenum getError();
virtual GLint getFramebufferAttachmentParameter(GLenum target, GLenum attachment,GLenum pname);
virtual GLint getProgramParameter(WebGLProgram program, GLenum pname);
virtual std::string getProgramInfoLog(WebGLProgram program);
virtual GLint getRenderbufferParameter(GLenum target, GLenum pname);
virtual GLint getShaderParameter(WebGLShader shader, GLenum pname);
virtual std::string getShaderInfoLog(WebGLShader shader);
virtual std::string getShaderSource(WebGLShader shader);
virtual GLint getTexParameter(GLenum target, GLenum pname);
virtual GLint getUniform(WebGLProgram program, WebGLUniformLocation location);
virtual WebGLUniformLocation getUniformLocation(WebGLProgram program, int fakeLoc,const std::string& name);
virtual GLint getVertexAttrib(GLuint index, GLenum pname);
virtual GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname);
virtual void hint(GLenum target, GLenum mode);
virtual GLboolean isBuffer(WebGLBuffer buffer);
virtual GLboolean isEnabled(GLenum cap);
virtual GLboolean isFramebuffer(WebGLFramebuffer framebuffer);
virtual GLboolean isProgram(WebGLProgram program);
virtual GLboolean isRenderbuffer(WebGLRenderbuffer renderbuffer);
virtual GLboolean isShader(WebGLShader shader);
virtual GLboolean isTexture(WebGLTexture texture);
virtual void lineWidth(GLfloat width);
virtual void linkProgram(WebGLProgram program);
virtual void pixelStorei(GLenum pname, GLint param);
virtual void polygonOffset(GLfloat factor, GLfloat units);
virtual void readPixelsAsync(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, int callbackObjID, int funcID);
virtual void renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
virtual void sampleCoverage(GLclampf value, GLboolean invert);
virtual void scissor(GLint x, GLint y, GLsizei width, GLsizei height);
virtual void shaderSource(WebGLShader shader, const std::string& source);
virtual void stencilFunc(GLenum func, GLint ref, GLuint mask);
virtual void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
virtual void stencilMask(GLuint mask);
virtual void stencilMaskSeparate(GLenum face, GLuint mask);
virtual void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
virtual void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
virtual void texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void* pixels);
virtual void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels);
virtual void texParameterf(GLenum target, GLenum pname, GLfloat param);
virtual void texParameteri(GLenum target, GLenum pname, GLint param);
virtual void uniform1f(WebGLUniformLocation location, GLfloat x);
virtual void uniform1fv(WebGLUniformLocation location, int byteSize, const GLfloat* v );
virtual void uniform1i(WebGLUniformLocation location, GLint x);
virtual void uniform1iv(WebGLUniformLocation location, int byteSize, const GLint* v );
virtual void uniform2f(WebGLUniformLocation location, GLfloat x, GLfloat y);
virtual void uniform2fv(WebGLUniformLocation location, int byteSize, const GLfloat* v );
virtual void uniform2i(WebGLUniformLocation location, GLint x, GLint y);
virtual void uniform2iv(WebGLUniformLocation location, int byteSize, const GLint* v );
virtual void uniform3f(WebGLUniformLocation location, GLfloat x, GLfloat y, GLfloat z);
virtual void uniform3fv(WebGLUniformLocation location, int byteSize, const GLfloat* v);
virtual void uniform3i(WebGLUniformLocation location, GLint x, GLint y, GLint z);
virtual void uniform3iv(WebGLUniformLocation location, int byteSize, const GLint* v );
virtual void uniform4f(WebGLUniformLocation location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
virtual void uniform4fv(WebGLUniformLocation location, int byteSize, const GLfloat* v );
virtual void uniform4i(WebGLUniformLocation location, GLint x, GLint y, GLint z, GLint w);
virtual void uniform4iv(WebGLUniformLocation location, int byteSize, const GLint* v);
virtual void uniformMatrix2fv(WebGLUniformLocation location, int byteSize,GLboolean transpose,GLfloat* value);
virtual void uniformMatrix3fv(WebGLUniformLocation location, int byteSize,GLboolean transpose,GLfloat* value);
virtual void uniformMatrix4fv(WebGLUniformLocation location, int byteSize, GLboolean transpose,GLfloat* value);
virtual void useProgram(WebGLProgram program);
virtual void validateProgram(WebGLProgram program);
virtual void vertexAttrib1f(GLuint index, GLfloat x);
virtual void vertexAttrib1fv(GLuint index, GLfloat* values);
virtual void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
virtual void vertexAttrib2fv(GLuint index, GLfloat* values);
virtual void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
virtual void vertexAttrib3fv(GLuint index, GLfloat* values);
virtual void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
virtual void vertexAttrib4fv(GLuint index, GLfloat* values);
virtual void vertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
virtual void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
virtual void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
virtual int createVertexArray(int fakeID);
virtual void bindVertexArray(int fakeID);
virtual void deleteVertexArray(int fakeID);
virtual void vertexAttribDivisor(GLuint index, GLuint divisor);
virtual void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
virtual void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr indices, GLsizei primcount);
virtual void texImage2DCanvas(GLsizei width, GLsizei height, int canvas);
virtual void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
virtual void useCommandEncoder(int nCmdSetID);
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
public:
virtual void deleteAllGLRes();
virtual void removeTextureFromMap(GLuint texture);
virtual void removeFrameBufferFromMap(GLuint frameBuffer);
virtual void removeProgramFromMap(GLuint program);
virtual void removeShaderFromMap(GLuint shader);
virtual void removeRenderBufferFromMap(GLuint renderBuffer);
virtual void removeBufferFromMap(GLuint buffer);
virtual void removeVAOFromMap(GLuint VAO);
public:
void _readPixelsAsync(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, int callbackObjID, int funcID);
private:
void flipY(GLenum format, GLsizei width, GLsizei height, void* pixels);
public:
static char m_pDummyData[TEX_IMAGE2D_DUMMY_MAX_SIZE];
public:
JCWebGLPlus* m_pWebGLPlus;
JCImageManager* m_pImageManager;
JCArrayBufferManager* m_pArrayBufferManager;
JCRegister* m_pRegister;
protected:
GLint m_nMainFrameBuffer;
JCIDGenerator* m_pIDGenerator;
JCIDGenerator* m_pProgramLocationTable;
bool m_bFlipY;
public:
int m_nCurrentBuffer;
int m_nCurrentProgram;
static float s_fMainCanvasScaleX;
static float s_fMainCanvasScaleY;
static float s_fMainCanvasTX;
static float s_fMainCanvasTY;
int m_nMainCanvasWidth;
int m_nMainCanvasHeight;
private:
std::unordered_map<GLuint, bool> m_vAllTexture;
std::unordered_map<GLuint, bool> m_vAllFrameBuffer;;
std::unordered_map<GLuint, bool> m_vAllProgram;
std::unordered_map<GLuint, bool> m_vAllShader;
std::unordered_map<GLuint, bool> m_vAllRenderBuffer;
std::unordered_map<GLuint, bool> m_vAllBuffer;
std::unordered_map<GLuint, bool> m_vAllVAO;
};
}
//------------------------------------------------------------------------------
#endif //__JCLayaGL_H__
//-----------------------------END FILE--------------------------------
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,400 @@
/**
@file JCLayaGLDispatch.h
@brief
@author James
@version 1.0
@date 2018_5_25
*/
#ifndef __JCLayaGLDispatch_H__
#define __JCLayaGLDispatch_H__
#include <stdlib.h>
#include "JCLayaGL.h"
#include <buffer/JCCommandEncoderBuffer.h>
//#define DEBUG_PARSE_STREAM 0
namespace laya
{
enum LAYA_FUNCTION_ID
{
LAYA_UNIFORMMATRIX2FVEX = 0,
LAYA_UNIFORMMATRIX3FVEX,
LAYA_UNIFORMMATRIX4FVEX,
LAYA_ADDSHADERUNIFORM,
LAYA_UPLOADSHADERUNIFORMS,
LAYA_UPLOADSHADERUNIFORMS_BUFFER,
LAYA_USECOMMANDENCODER,
LAYA_LOADDATATOREG,
LAYA_LOADDATATOREGEX,
LAYA_IFLESS0,
LAYA_IFEQUAL0,
LAYA_IFGREATER0,
LAYA_IFLEQUAL0,
LAYA_IFGEQUAL0,
LAYA_IFGNOTEQUAL0,
LAYA_OPERATEREG,
LAYA_STORE,
LAYA_CREATE_IMAGE_ON_RENDER_THREAD = 64,
LAYA_DELETE_IMAGE_ON_RENDER_THREAD,
LAYA_RELEASE_IMAGE_ON_RENDER_THREAD,
LAYA_SET_IMAGE_RELEASE_SPACE_TIME,
LAYA_SET_PREMULTIPLY_ALPHA,
LAYA_PERFADDDATA,
LAYA_PERFUPDATEDT,
LAYA_SET_MAIN_CONTEXT_SIZE,
//-------------------------------
LAYA_GETCONTEXTATTRIBUTES = 128,
LAYA_ISCONTEXTLOST,
LAYA_GETSUPPORTEDEXTENSIONS,
LAYA_GETEXTENSION,
LAYA_ACTIVETEXTURE,
LAYA_ATTACHSHADER,
LAYA_BINDATTRIBLOCATION,
LAYA_BINDBUFFER,
LAYA_BINDFRAMEBUFFER,
LAYA_BINDRENDERBUFFER,//第10个
LAYA_BINDTEXTURE,
LAYA_USETEXTURE,
LAYA_BLENDCOLOR,
LAYA_BLENDEQUATION,
LAYA_BLENDEQUATIONSEPARATE,
LAYA_BLENDFUNC,
LAYA_BLENDFUNCSEPARATE,
LAYA_BUFFERDATA_SIZE,
LAYA_BUFFERDATA_ARRAYBUFFER,
LAYA_BUFFERSUBDATA,//第20个
LAYA_CHECKFRAMEBUFFERSTATUS,
LAYA_CLEAR,
LAYA_CLEARCOLOR,
LAYA_CLEARDEPTH,
LAYA_CLEARSTENCIL,
LAYA_COLORMASK,
LAYA_COMPILESHADER,
LAYA_COPYTEXIMAGE2D,
LAYA_COPYTEXSUBIMAGE2D,
LAYA_CREATEBUFFER,//第30个
LAYA_CREATEFRAMEBUFFER,
LAYA_CREATEPROGRAM,
LAYA_CREATERENDERBUFFER,
LAYA_CREATESHADER,
LAYA_CREATETEXTURE,
LAYA_CULLFACE,
LAYA_DELETEBUFFER,
LAYA_DELETEFRAMEBUFFER,
LAYA_DELETEPROGRAM,
LAYA_DELETERENDERBUFFER,//第40个
LAYA_DELETESHADER,
LAYA_DELETETEXTURE,
LAYA_DEPTHFUNC,
LAYA_DEPTHMASK,
LAYA_DEPTHRANGE,
LAYA_DETACHSHADER,
LAYA_DISABLE,
LAYA_DISABLEVERTEXATTRIBARRAY,
LAYA_DRAWARRAYS,
LAYA_DRAWELEMENTS,//第50个
LAYA_ENABLE,
LAYA_ENABLEVERTEXATTRIBARRAY,
LAYA_FINISH,
LAYA_FLUSH,
LAYA_FRAMEBUFFERRENDERBUFFER,
LAYA_FRAMEBUFFERTEXTURE2D,
LAYA_FRONTFACE,
LAYA_GENERATEMIPMAP,
LAYA_GETACTIVEATTRIB,
LAYA_GETACTIVEUNIFORM,//第60个
LAYA_GETATTRIBLOCATION,
LAYA_GETPARAMETER,
LAYA_GETBUFFERPARAMETER,
LAYA_GETERROR,
LAYA_GETFRAMEBUFFERATTACHMENTPARAMETER,
LAYA_GETPROGRAMPARAMETER,
LAYA_GETPROGRAMINFOLOG,
LAYA_GETRENDERBUFFERPARAMETER,
LAYA_GETSHADERPRECISIONFORMAT,
LAYA_GETSHADERPARAMETER,//第70个
LAYA_GETSHADERINFOLOG,
LAYA_GETSHADERSOURCE,
LAYA_GETTEXPARAMETER,
LAYA_GETUNIFORM,
LAYA_GETUNIFORMLOCATION,
LAYA_GETVERTEXATTRIB,
LAYA_GETVERTEXATTRIBOFFSET,
LAYA_HINT,
LAYA_ISBUFFER,
LAYA_ISENABLED,//第80个
LAYA_ISFRAMEBUFFER,
LAYA_ISPROGRAM,
LAYA_ISRENDERBUFFER,
LAYA_ISSHADER,
LAYA_ISTEXTURE,
LAYA_LINEWIDTH,
LAYA_LINKPROGRAM,
LAYA_PIXELSTOREI,
LAYA_POLYGONOFFSET,
LAYA_READPIXELS,//第90个
LAYA_RENDERBUFFERSTORAGE,
LAYA_SAMPLECOVERAGE,
LAYA_SCISSOR,
LAYA_SHADERSOURCE,
LAYA_STENCILFUNC,
LAYA_STENCILFUNCSEPARATE,
LAYA_STENCILMASK,
LAYA_STENCILMASKSEPARATE,
LAYA_STENCILOP,
LAYA_STENCILOPSEPARATE,//第100个
LAYA_TEXIMAGE2D,
LAYA_TEXPARAMETERF,
LAYA_TEXPARAMETERI,
LAYA_TEXSUBIMAGE2D,
LAYA_UNIFORM1F,
LAYA_UNIFORM1FV,
LAYA_UNIFORM1I,
LAYA_UNIFORM1IV,
LAYA_UNIFORM2F,
LAYA_UNIFORM2FV,//第110个
LAYA_UNIFORM2I,
LAYA_UNIFORM2IV,
LAYA_UNIFORM3F,
LAYA_UNIFORM3FV,
LAYA_UNIFORM3I,
LAYA_UNIFORM3IV,
LAYA_UNIFORM4F,
LAYA_UNIFORM4FV,
LAYA_UNIFORM4I,
LAYA_UNIFORM4IV,//第120个
LAYA_UNIFORMMATRIX2FV,
LAYA_UNIFORMMATRIX3FV,
LAYA_UNIFORMMATRIX4FV,
LAYA_USEPROGRAM,
LAYA_VALIDATEPROGRAM,
LAYA_VERTEXATTRIB1F,
LAYA_VERTEXATTRIB1FV,
LAYA_VERTEXATTRIB2F,
LAYA_VERTEXATTRIB2FV,
LAYA_VERTEXATTRIB3F,//第130个
LAYA_VERTEXATTRIB3FV,
LAYA_VERTEXATTRIB4F,
LAYA_VERTEXATTRIB4FV,
LAYA_VERTEXATTRIBPOINTER,
LAYA_VIEWPORT,
LAYA_CONFIGUREBACKBUFFER,
LAYA_COMPRESSEDTEXIMAGE2D,
LAYA_TEXIMAGE2D_PIXEL,
LAYA_TEXSUBIMAGE2D_PIXEL,
LAYA_CREATEVERTEXARRAY,//第140个
LAYA_BINDVERTEXARRAY,
LAYA_DELETEVERTEXARRAYS,
LAYA_READPIXELSASYNC,
LAYA_COMPRESSEDTEXSUBIMAGE2D,
LAYA_VERTEXATTRIBDIVISOR,
LAYA_DRAWARRAYSINSTANCED,
LAYA_DRAWELEMENTSINSTANCED,
};
class JCLayaGLDispatch
{
public:
typedef void(*ProcFunction)(JCCommandEncoderBuffer& layaGLCmd);
static bool dispatchScriptCmd(JCCommandEncoderBuffer& layaGLCmd);
static void dispatchAllCmds(JCCommandEncoderBuffer* pTemplateMem);
public:
static void _layaGL_empty(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getContextAttributes(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isContextLost(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getSupportedExtensions(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getExtension(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_activeTexture(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_attachShader(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bindAttribLocation(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bindBuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bindFramebuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bindRenderbuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bindTexture(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_useTexture(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_blendColor(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_blendEquation(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_blendEquationSeparate(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_blendFunc(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_blendFuncSeparate(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bufferData_size(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bufferData_ArrayBuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bufferSubData(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_checkFramebufferStatus(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_clear(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_clearColor(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_clearDepth(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_clearStencil(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_colorMask(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_compileShader(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_copyTexImage2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_copyTexSubImage2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createBuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createFramebuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createProgram(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createRenderbuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createShader(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createTexture(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_cullFace(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteBuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteFramebuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteProgram(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteRenderbuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteShader(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteTexture(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_depthFunc(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_depthMask(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_depthRange(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_detachShader(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_disable(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_disableVertexAttribArray(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_drawArrays(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_drawElements(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_enable(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_enableVertexAttribArray(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_finish(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_flush(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_framebufferRenderbuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_framebufferTexture2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_frontFace(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_generateMipmap(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getActiveAttrib(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getActiveUniform(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getAttribLocation(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getBufferParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getError(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getFramebufferAttachmentParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getProgramParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getProgramInfoLog(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getRenderbufferParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getShaderPrecisionFormat(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getShaderParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getShaderInfoLog(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getShaderSource(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getTexParameter(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getUniform(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getUniformLocation(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getVertexAttrib(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_getVertexAttribOffset(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_hint(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isBuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isEnabled(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isFramebuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isProgram(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isRenderbuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isShader(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_isTexture(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_lineWidth(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_linkProgram(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_pixelStorei(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_polygonOffset(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_readPixels(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_renderbufferStorage(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_sampleCoverage(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_scissor(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_shaderSource(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_stencilFunc(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_stencilFuncSeparate(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_stencilMask(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_stencilMaskSeparate(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_stencilOp(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_stencilOpSeparate(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texImage2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texParameterf(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texParameteri(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texSubImage2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform1f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform1fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform1i(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform1iv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform2f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform2fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform2i(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform2iv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform3f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform3fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform3i(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform3iv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform4f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform4fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform4i(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniform4iv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniformMatrix2fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniformMatrix3fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniformMatrix4fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_useProgram(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_validateProgram(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib1f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib1fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib2f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib2fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib3f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib3fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib4f(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttrib4fv(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttribPointer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_viewport(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_configureBackBuffer(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_compressedTexImage2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texImage2D_pixel(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texSubImage2D_pixel(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_createVertexArray(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_bindVertexArray(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteVertexArray(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_readPixelsAsync(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_compressedTexSubImage2D(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_vertexAttribDivisor(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_drawArraysInstanced(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_drawElementsInstanced(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texImage2D_canvas(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_texStorage2D(JCCommandEncoderBuffer& layaGLCmd);
//------------------------------------------------------------------------------
//-------------------------webgl扩展函数-----------------------------------------
//------------------------------------------------------------------------------
static void _layaGL_uniformMatrix2fvEx(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniformMatrix3fvEx(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uniformMatrix4fvEx(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_addShaderUniform(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_useCommandEncoder(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uploadShaderUniforms(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_uploadShaderUniformsData(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_loadDataToReg(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_loadDataToRegEx(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_ifLess0(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_ifEqual0(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_ifGreater0(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_ifLEqual0(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_ifGEqual0(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_ifGNotEqual0(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_operateReg(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_store(JCCommandEncoderBuffer& layaGLCmd);
//------------------------------------------------------------------------------
//-------------------------C++函数-----------------------------------------
//------------------------------------------------------------------------------
static void _layaGL_createImageOnRenderThread(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_deleteImageOnRenderThread(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_releaseImageOnRenderThread(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_setImageReleaseSpaceTime(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_setPremultiplyAlpha(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_PerfAddData(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_PerfUpdateDt(JCCommandEncoderBuffer& layaGLCmd);
static void _layaGL_setMainContextSize(JCCommandEncoderBuffer& layaGLCmd);
public:
static JCLayaGL* ms_pLayaGL; ///<全局的LayaGL
};
}
//------------------------------------------------------------------------------
#endif //__JCLayaGLDispatch_H__
//-----------------------------END FILE--------------------------------