EGL绘制是否支持多线程?如何在多线程的场景下同时操作一块buffer进行图形绘制

EGL绘制是否支持多线程?如何在多线程的场景下同时操作一块buffer进行图形绘制

HarmonyOS
2024-03-17 12:29:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect
  • 支持多线程,可以通过每个线程各自产生一块纹理,再将这些纹理合成到一块buffer。
  • 可以使用sharedContext,另外绘制操作可通过调用OpenGL实现。
  • 创建ShareEglContext的代码如下:
void CreateShareEglContext() 
{ 
  if (renderContext == nullptr) { // renderContext是主线程context 
    RS_LOGE("renderContext_ is nullptr"); 
    return; 
  } 
  eglShareContext = renderContext->CreateShareContext(); //  创建share context 
  if (eglShareContext == EGL_NO_CONTEXT) { 
    RS_LOGE("eglShareContext is EGL_NO_CONTEXT"); 
    return; 
  } 
  if (!eglMakeCurrent(renderContext->GetEGLDisplay(), EGL_NO_SURFACE, EGL_NO_SURFACE, eglShareContext)) { 
    RS_LOGE("eglMakeCurrent failed"); 
    return; 
  } 
}
分享
微博
QQ
微信
回复
2024-03-17 22:17:43
相关问题
求大佬告知ArkTS是否支持多线程
269浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
416浏览 • 1回复 待解决
如何实现多线程数据共享
213浏览 • 1回复 待解决
系统多线程模型是什么样
122浏览 • 1回复 待解决
鸿蒙如何实现位图绘制
7774浏览 • 1回复 待解决
是否支持Context跨线程传递
129浏览 • 1回复 待解决
如何判断当前线程是否是主线程
244浏览 • 1回复 待解决
SurfaceProvider绘制延迟
5513浏览 • 4回复 已解决
是否线程安全容器类
252浏览 • 1回复 待解决
基于libuv异步库进行线程通信
185浏览 • 0回复 待解决