update code,because of line space

Signed-off-by: tyBrave <tianyong13@huawei.com>
This commit is contained in:
tyBrave 2023-02-07 11:06:00 +08:00
parent d18694a96e
commit a241953878
5 changed files with 61 additions and 105 deletions

View File

@ -49,7 +49,7 @@
GET_AND_THROW_LAST_ERROR((env)); \ GET_AND_THROW_LAST_ERROR((env)); \
return retVal; \ return retVal; \
} \ } \
} while (0) } while (0)
#define NAPI_CALL(env, theCall) NAPI_CALL_BASE(env, theCall, nullptr) #define NAPI_CALL(env, theCall) NAPI_CALL_BASE(env, theCall, nullptr)

View File

@ -33,7 +33,7 @@ static napi_value Add(napi_env env, napi_callback_info info)
size_t argc = 2; size_t argc = 2;
napi_value args[2] = {nullptr}; napi_value args[2] = {nullptr};
napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
napi_valuetype valuetype0; napi_valuetype valuetype0;
napi_typeof(env, args[0], &valuetype0); napi_typeof(env, args[0], &valuetype0);
@ -49,32 +49,30 @@ static napi_value Add(napi_env env, napi_callback_info info)
napi_value sum; napi_value sum;
napi_create_double(env, value0 + value1, &sum); napi_create_double(env, value0 + value1, &sum);
return sum; return sum;
} }
static napi_value Init(napi_env env, napi_value exports) static napi_value Init(napi_env env, napi_value exports)
{ {
napi_property_descriptor desc[] = { napi_property_descriptor desc[] = {
DECLARE_NAPI_FUNCTION("EglRenderInit", EGLRender:: RenderInit), DECLARE_NAPI_FUNCTION("EglRenderInit", EGLRender::RenderInit),
DECLARE_NAPI_FUNCTION("EglRenderSetImageData", EGLRender:: RenderSetData), DECLARE_NAPI_FUNCTION("EglRenderSetImageData", EGLRender::RenderSetData),
DECLARE_NAPI_FUNCTION("EglPixelMapSurface", EGLRender:: GetPixelMapOfSurface), DECLARE_NAPI_FUNCTION("EglPixelMapSurface", EGLRender::GetPixelMapOfSurface),
DECLARE_NAPI_FUNCTION("EglRenderSetIntParams", EGLRender:: RenderSetIntParams), DECLARE_NAPI_FUNCTION("EglRenderSetIntParams", EGLRender::RenderSetIntParams),
DECLARE_NAPI_FUNCTION("EglIsInit", EGLRender:: EGLIsInit), DECLARE_NAPI_FUNCTION("EglIsInit", EGLRender::EGLIsInit),
DECLARE_NAPI_FUNCTION("EglDestroy", EGLRender:: DestroyGlesEnv), DECLARE_NAPI_FUNCTION("EglDestroy", EGLRender::DestroyGlesEnv),
DECLARE_NAPI_FUNCTION("EglUseProgram", EGLRender:: StartUseProgram), DECLARE_NAPI_FUNCTION("EglUseProgram", EGLRender::StartUseProgram),
DECLARE_NAPI_FUNCTION("EglRendering", EGLRender:: Rendering), DECLARE_NAPI_FUNCTION("EglRendering", EGLRender::Rendering),
DECLARE_NAPI_FUNCTION("EglUniform1i", EGLRender:: RenderGlUniform1i), DECLARE_NAPI_FUNCTION("EglUniform1i", EGLRender::RenderGlUniform1i),
DECLARE_NAPI_FUNCTION("EglUniform1f", EGLRender:: RenderGlUniform1f), DECLARE_NAPI_FUNCTION("EglUniform1f", EGLRender::RenderGlUniform1f),
DECLARE_NAPI_FUNCTION("EglUniform2fv", EGLRender:: RenderGlUniform2fv), DECLARE_NAPI_FUNCTION("EglUniform2fv", EGLRender::RenderGlUniform2fv),
DECLARE_NAPI_FUNCTION("EglSetTypeArrayOfFloat", EGLRender:: setTypeArrayOfFloat), DECLARE_NAPI_FUNCTION("EglSetTypeArrayOfFloat", EGLRender::setTypeArrayOfFloat),
DECLARE_NAPI_FUNCTION("EglSetTypeArrayOfMatrix3f", EGLRender:: setTypeArrayOfMatrix3f), DECLARE_NAPI_FUNCTION("EglSetTypeArrayOfMatrix3f", EGLRender::setTypeArrayOfMatrix3f),
DECLARE_NAPI_FUNCTION("EglSetTypeArrayOfMatrix4f", EGLRender:: setTypeArrayOfMatrix4f), DECLARE_NAPI_FUNCTION("EglSetTypeArrayOfMatrix4f", EGLRender::setTypeArrayOfMatrix4f),
}; };
NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
return exports; return exports;

View File

@ -182,7 +182,7 @@ napi_value EGLRender::EGLIsInit(napi_env env, napi_callback_info info)
int32_t value; int32_t value;
if (EGLRender::GetInstance() -> m_IsGLContextReady) { if (EGLRender::GetInstance() -> m_IsGLContextReady) {
value = 1; value = 1;
}else { } else {
value = 0; value = 0;
} }
napi_status status = napi_create_int32(env, value, &isInit); napi_status status = napi_create_int32(env, value, &isInit);
@ -234,7 +234,7 @@ napi_value EGLRender::setTypeArrayOfFloat(napi_env env, napi_callback_info info)
size_t bufferLength; size_t bufferLength;
size_t byte_offset; size_t byte_offset;
napi_status buffStatus = napi_get_typedarray_info(env, napi_status buffStatus = napi_get_typedarray_info(env,
args[2], &dataType, &bufferLength, &buffer, &args[2], &byte_offset); args[2], &dataType, &bufferLength, &buffer, &args[2], &byte_offset);
if (buffStatus != napi_ok) { if (buffStatus != napi_ok) {
return nullptr; return nullptr;
} }
@ -245,13 +245,13 @@ napi_value EGLRender::setTypeArrayOfFloat(napi_env env, napi_callback_info info)
if (strcmp(key, "glUniform2fv") == 0) { if (strcmp(key, "glUniform2fv") == 0) {
uniformType = UNIFORM_TYPE_2FV; uniformType = UNIFORM_TYPE_2FV;
}else if (strcmp(key, "glUniform3fv") == 0) { } else if (strcmp(key, "glUniform3fv") == 0) {
uniformType = UNIFORM_TYPE_3FV; uniformType = UNIFORM_TYPE_3FV;
}else if (strcmp(key, "glUniform4fv") == 0) { } else if (strcmp(key, "glUniform4fv") == 0) {
uniformType = UNIFORM_TYPE_4FV; uniformType = UNIFORM_TYPE_4FV;
}else if (strcmp(key, "glUniform1fv") == 0) { } else if (strcmp(key, "glUniform1fv") == 0) {
uniformType = UNIFORM_TYPE_FV; uniformType = UNIFORM_TYPE_FV;
}else if (strcmp(key, "glUniform2f") == 0) { } else if (strcmp(key, "glUniform2f") == 0) {
uniformType = UNIFORM_TYPE_2F; uniformType = UNIFORM_TYPE_2F;
} }
@ -275,7 +275,7 @@ napi_value EGLRender::setTypeArrayOfMatrix3f(napi_env env, napi_callback_info in
size_t bufferLength; size_t bufferLength;
size_t byte_offset; size_t byte_offset;
napi_status buffStatus = napi_get_typedarray_info(env, napi_status buffStatus = napi_get_typedarray_info(env,
args[1], &dataType, &bufferLength, &buffer, &args[1], &byte_offset); args[1], &dataType, &bufferLength, &buffer, &args[1], &byte_offset);
if (buffStatus != napi_ok) { if (buffStatus != napi_ok) {
return nullptr; return nullptr;
} }
@ -303,7 +303,7 @@ napi_value EGLRender::setTypeArrayOfMatrix4f(napi_env env, napi_callback_info in
size_t bufferLength; size_t bufferLength;
size_t byte_offset; size_t byte_offset;
napi_status buffStatus = napi_get_typedarray_info(env, napi_status buffStatus = napi_get_typedarray_info(env,
args[1], &dataType, &bufferLength, &buffer, &args[1], &byte_offset); args[1], &dataType, &bufferLength, &buffer, &args[1], &byte_offset);
if (buffStatus != napi_ok) { if (buffStatus != napi_ok) {
return nullptr; return nullptr;
} }
@ -404,7 +404,6 @@ void EGLRender::Init()
if (!m_IsGLContextReady) { if (!m_IsGLContextReady) {
return; return;
} }
glGenTextures(1, &m_ImageTextureId); // 生成纹理名称 glGenTextures(1, &m_ImageTextureId); // 生成纹理名称
glBindTexture(GL_TEXTURE_2D, m_ImageTextureId); // 允许建立一个绑定到目标纹理的有名称的纹理 glBindTexture(GL_TEXTURE_2D, m_ImageTextureId); // 允许建立一个绑定到目标纹理的有名称的纹理
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
@ -420,15 +419,12 @@ void EGLRender::Init()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, GL_NONE); glBindTexture(GL_TEXTURE_2D, GL_NONE);
m_ProgramObj = GLUtils::CreateProgram(vShaderStr, fShaderStr0, m_VertexShader, m_ProgramObj = GLUtils::CreateProgram(vShaderStr, fShaderStr0, m_VertexShader,
m_FragmentShader); m_FragmentShader);
if (!m_ProgramObj) { if (!m_ProgramObj) {
GLUtils::CheckGLError("Create Program"); GLUtils::CheckGLError("Create Program");
return; return;
} }
// Generate VBO Ids and load the VBOs width data
glGenBuffers(DEFAULT_THREE, m_VboIds); glGenBuffers(DEFAULT_THREE, m_VboIds);
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ZERO]); glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ZERO]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vVertices), vVertices, GL_STATIC_DRAW); glBufferData(GL_ARRAY_BUFFER, sizeof(vVertices), vVertices, GL_STATIC_DRAW);
@ -438,30 +434,26 @@ void EGLRender::Init()
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[DEFAULT_TWO]); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[DEFAULT_TWO]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
// Generate VAO Ids
glGenVertexArrays(DEFAULT_ONE, m_VaoIds); glGenVertexArrays(DEFAULT_ONE, m_VaoIds);
// FBO off screen rendering VAO
glBindVertexArray(m_VaoIds[DEFAULT_ZERO]); glBindVertexArray(m_VaoIds[DEFAULT_ZERO]);
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ZERO]); glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ZERO]);
glEnableVertexAttribArray(VERTEX_POS_LOC); glEnableVertexAttribArray(VERTEX_POS_LOC);
glVertexAttribPointer(VERTEX_POS_LOC, glVertexAttribPointer(VERTEX_POS_LOC,
DEFAULT_THREE, DEFAULT_THREE,
GL_FLOAT, GL_FALSE, GL_FLOAT, GL_FALSE,
DEFAULT_THREE * sizeof(GLfloat), DEFAULT_THREE * sizeof(GLfloat),
(const void *)DEFAULT_ZERO); (const void *)DEFAULT_ZERO);
glBindBuffer(GL_ARRAY_BUFFER, GL_NONE); glBindBuffer(GL_ARRAY_BUFFER, GL_NONE);
glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ONE]); glBindBuffer(GL_ARRAY_BUFFER, m_VboIds[DEFAULT_ONE]);
glEnableVertexAttribArray(TEXTURE_POS_LOC); glEnableVertexAttribArray(TEXTURE_POS_LOC);
glVertexAttribPointer(TEXTURE_POS_LOC, glVertexAttribPointer(TEXTURE_POS_LOC,
DEFAULT_TWO, DEFAULT_TWO,
GL_FLOAT, GL_FLOAT,
GL_FALSE, GL_FALSE,
DEFAULT_TWO * sizeof(GLfloat), DEFAULT_TWO * sizeof(GLfloat),
(const void *)DEFAULT_ZERO); (const void *)DEFAULT_ZERO);
glBindBuffer(GL_ARRAY_BUFFER, GL_NONE); glBindBuffer(GL_ARRAY_BUFFER, GL_NONE);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[DEFAULT_TWO]); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_VboIds[DEFAULT_TWO]);
@ -470,8 +462,7 @@ void EGLRender::Init()
int EGLRender::CreateGlEnv() int EGLRender::CreateGlEnv()
{ {
const EGLint confAttr[] = const EGLint confAttr[] = {
{
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT_KHR, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT_KHR,
EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
EGL_RED_SIZE, 8, EGL_RED_SIZE, 8,
@ -482,15 +473,11 @@ int EGLRender::CreateGlEnv()
EGL_STENCIL_SIZE, 8, EGL_STENCIL_SIZE, 8,
EGL_NONE EGL_NONE
}; };
// EGL context attributes const EGLint ctxAttr[] = {
const EGLint ctxAttr[] =
{
EGL_CONTEXT_CLIENT_VERSION, 2, EGL_CONTEXT_CLIENT_VERSION, 2,
EGL_NONE EGL_NONE
}; };
const EGLint surfaceAttr[] = {
const EGLint surfaceAttr[] =
{
EGL_WIDTH, 1, EGL_WIDTH, 1,
EGL_HEIGHT, 1, EGL_HEIGHT, 1,
EGL_NONE EGL_NONE
@ -504,64 +491,37 @@ int EGLRender::CreateGlEnv()
resultCode = -1; resultCode = -1;
break; break;
} }
// 初始化 egl 方法 // 初始化 egl 方法
if (!eglInitialize(m_eglDisplay, &eglMajVers, &eglMinVers)) { if (!eglInitialize(m_eglDisplay, &eglMajVers, &eglMinVers)) {
resultCode = -1; resultCode = -1;
break; break;
} }
// 获取 EGLConfig 对象,确定渲染表面的配置信息 // 获取 EGLConfig 对象,确定渲染表面的配置信息
if (!eglChooseConfig(m_eglDisplay, confAttr, &m_eglConf, 1, &numConfigs)) { if (!eglChooseConfig(m_eglDisplay, confAttr, &m_eglConf, 1, &numConfigs)) {
resultCode = -1; resultCode = -1;
break; break;
} }
// 创建渲染表面 EGLSurface 使用 eglCreateBufferSurface 创建屏幕外渲染区域 // 创建渲染表面 EGLSurface 使用 eglCreateBufferSurface 创建屏幕外渲染区域
m_eglSurface = eglCreatePbufferSurface(m_eglDisplay, m_eglConf, surfaceAttr); m_eglSurface = eglCreatePbufferSurface(m_eglDisplay, m_eglConf, surfaceAttr);
if (m_eglSurface == EGL_NO_SURFACE) { if (m_eglSurface == EGL_NO_SURFACE) {
switch(eglGetError()) { LOGI("gl-->::CreateGlesEnv happen default error");
case EGL_BAD_ALLOC: break;
LOGI("gl-->::CreateGlesEnv Not enough resources available");
break;
case EGL_BAD_CONFIG:
LOGI("gl-->::CreateGlesEnv provided EGLConfig is invalid");
break;
case EGL_BAD_PARAMETER:
LOGI("gl-->::CreateGlesEnv provided EGL_WIDTH and EGL_HEIGHT is invalid");
break;
case EGL_BAD_MATCH:
LOGI("gl-->::CreateGlesEnv Check window and EGLConfig attributes");
break;
default:
LOGI("gl-->::CreateGlesEnv happen default error");
break;
}
} }
// 创建渲染上下文 EGLContext // 创建渲染上下文 EGLContext
m_eglCtx = eglCreateContext(m_eglDisplay, m_eglConf, EGL_NO_CONTEXT, ctxAttr); m_eglCtx = eglCreateContext(m_eglDisplay, m_eglConf, EGL_NO_CONTEXT, ctxAttr);
if (m_eglCtx == EGL_NO_CONTEXT) { if (m_eglCtx == EGL_NO_CONTEXT) {
EGLint error = eglGetError(); EGLint error = eglGetError();
if (error == EGL_BAD_CONFIG) { if (error == EGL_BAD_CONFIG) {
LOGI("gl-->::CreateGlesEnv EGL_BAD_CONFIG");
resultCode = -1; resultCode = -1;
break; break;
} }
} }
// 绑定上下文 // 绑定上下文
if (!eglMakeCurrent(m_eglDisplay, m_eglSurface, m_eglSurface, m_eglCtx)) { if (!eglMakeCurrent(m_eglDisplay, m_eglSurface, m_eglSurface, m_eglCtx)) {
resultCode = -1; resultCode = -1;
break; break;
} }
LOGI("gl-->::CreateGlesEnv initialize success");
} while (false); } while (false);
if (resultCode != 0) {
LOGI("gl-->::CreateGlesEnv fail");
}
return resultCode; return resultCode;
} }
@ -580,14 +540,14 @@ void EGLRender::SetImageData(uint8_t *pData, int width, int height)
glBindTexture(GL_TEXTURE_2D, m_ImageTextureId); glBindTexture(GL_TEXTURE_2D, m_ImageTextureId);
glTexImage2D(GL_TEXTURE_2D, glTexImage2D(GL_TEXTURE_2D,
0, 0,
GL_RGBA, GL_RGBA,
m_RenderImage.width, m_RenderImage.width,
m_RenderImage.height, m_RenderImage.height,
0, 0,
GL_RGBA, GL_RGBA,
GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE,
m_RenderImage.ppPlane[0]); m_RenderImage.ppPlane[0]);
glBindTexture(GL_TEXTURE_2D, GL_NONE); glBindTexture(GL_TEXTURE_2D, GL_NONE);
if (m_FboId == GL_NONE) { if (m_FboId == GL_NONE) {
@ -597,14 +557,14 @@ void EGLRender::SetImageData(uint8_t *pData, int width, int height)
glBindTexture(GL_TEXTURE_2D, m_FboTextureId); glBindTexture(GL_TEXTURE_2D, m_FboTextureId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_FboTextureId, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_FboTextureId, 0);
glTexImage2D(GL_TEXTURE_2D, glTexImage2D(GL_TEXTURE_2D,
0, 0,
GL_RGBA, GL_RGBA,
m_RenderImage.width, m_RenderImage.width,
m_RenderImage.height, m_RenderImage.height,
0, 0,
GL_RGBA, GL_RGBA,
GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE,
nullptr); nullptr);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
LOGI("gl--> EGLRender ::SetImageData glCheckFramebufferStatus status != GL_FRAMEBUFFER_COMPLETE"); LOGI("gl--> EGLRender ::SetImageData glCheckFramebufferStatus status != GL_FRAMEBUFFER_COMPLETE");
} }
@ -683,7 +643,6 @@ void EGLRender::SetIntParams(int paramType, int param)
vShader[0] = vShaderStr; vShader[0] = vShaderStr;
break; break;
} }
m_ProgramObj = GLUtils::CreateProgram(vShader[0], fShader[0], m_VertexShader, m_ProgramObj = GLUtils::CreateProgram(vShader[0], fShader[0], m_VertexShader,
m_FragmentShader); m_FragmentShader);
if (!m_ProgramObj) { if (!m_ProgramObj) {
@ -691,7 +650,6 @@ void EGLRender::SetIntParams(int paramType, int param)
LOGI("gl--> EGLRender::SetIntParams Could not create program."); LOGI("gl--> EGLRender::SetIntParams Could not create program.");
return; return;
} }
m_SamplerLoc = glGetUniformLocation(m_ProgramObj, "s_TextureMap"); m_SamplerLoc = glGetUniformLocation(m_ProgramObj, "s_TextureMap");
m_TexSizeLoc = glGetUniformLocation(m_ProgramObj, "u_texSize"); m_TexSizeLoc = glGetUniformLocation(m_ProgramObj, "u_texSize");
} }
@ -704,7 +662,9 @@ void EGLRender::SetIntParams(int paramType, int param)
void EGLRender::UseProgram() void EGLRender::UseProgram()
{ {
if (m_ProgramObj == GL_NONE) return; if (m_ProgramObj == GL_NONE) {
return;
}
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

View File

@ -37,8 +37,7 @@ public:
static EGLRender* GetInstance() static EGLRender* GetInstance()
{ {
if(sInstance == nullptr) if (sInstance == nullptr) {
{
sInstance = new EGLRender(); sInstance = new EGLRender();
} }
return sInstance; return sInstance;
@ -46,8 +45,7 @@ public:
static void DestroyRender() static void DestroyRender()
{ {
if (sInstance) if (sInstance) {
{
delete sInstance; delete sInstance;
sInstance = nullptr; sInstance = nullptr;
} }

View File

@ -75,7 +75,7 @@ public:
if (pImage ->height == DEFAULT_ZERO || pImage ->width == DEFAULT_ZERO) return; if (pImage ->height == DEFAULT_ZERO || pImage ->width == DEFAULT_ZERO) return;
switch (pImage -> format) { switch (pImage -> format) {
case IMAGE_FORMAT_RGBA: { case IMAGE_FORMAT_RGBA: {
pImage->ppPlane[DEFAULT_ZERO] = pImage->ppPlane[DEFAULT_ZERO] =
static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_FOUR)); static_cast<uint8_t *>(malloc(pImage->width * pImage ->height * DEFAULT_FOUR));
} }
break; break;