¿Se permite crear un contexto egl desde main() y representar desde otro subproceso, dado el hecho de que los identificadores de contexto pasan de main() a la función del subproceso?egl - ¿Se puede compartir el contexto entre subprocesos
9
A
Respuesta
16
Sí, claro está.
En primer lugar es necesario crear un contexto en el de un hilo:
EGLint contextAttrs[] = {
EGL_CONTEXT_CLIENT_VERSION, 2,
EGL_NONE
};
LOG_INFO("creating context");
if (!(m_Context = eglCreateContext(m_Display, m_Config, 0, contextAttrs)))
{
LOG_ERROR("eglCreateContext() returned error %d", eglGetError());
return false;
}
Luego, en el otro hilo se crea un contexto compartido de esta manera:
EGLint contextAttrs[] =
{
EGL_CONTEXT_CLIENT_VERSION, 2,
EGL_NONE
};
if (m_Context == 0)
{
LOG_ERROR("m_Context wasn't initialized for some reason");
}
// create a shared context for this thread
m_LocalThreadContext = eglCreateContext(m_Display, m_Config, m_Context, contextAttrs);
Usted, por supuesto, tiene que tener algunos mutex/semáforos para sincronizar cualquier actualización que quieras hacer con GLES. Por ejemplo, usted tiene que hacer un
eglMakeCurrent(m_Display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
dentro del hilo antes de que el otro hilo puede llamar
if (!eglMakeCurrent(m_Display, m_Surface, m_Surface, m_Context))
{
LOG_ERROR("eglMakeCurrent() returned error %d", eglGetError());
}
continuación, puede crear texturas, shaders de carga, etc., ya sea hilo
Cuestiones relacionadas
- 1. C++, cómo compartir datos entre procesos o subprocesos
- 2. Compartir contexto automáticamente en RSpec
- 3. Compartir datos entre AppDomains
- 4. BoxLayout no se puede compartir error
- 5. Log4jConfigListener no se puede encontrar - contexto no se puede iniciar
- 6. Confusión entre OPEN GL ES y la biblioteca EGL
- 7. Subprocesos C# - Publicar mensajes entre subprocesos
- 8. cómo compartir una transacción entre varios hilos
- 9. ¿Cómo se comparten los registros entre subprocesos?
- 10. ¿Qué es EGL y cómo puedo usarlo?
- 11. Compartir página aspx entre proyectos
- 12. ¿Debo compartir el contexto Entidad-Marco o crear un nuevo contexto para cada operación?
- 13. No se puede invocar el procesador de contexto personalizado
- 14. No se puede resolver el símbolo: es en este contexto
- 15. ¿Cuáles son las implicaciones de rendimiento de compartir objetos entre subprocesos?
- 16. ¿Se pueden compartir SharedPreferences entre diferentes aplicaciones de Android?
- 17. Compartir un objeto entre actividades
- 18. Compartir HDC entre diferentes procesos
- 19. El dibujo de UIKit es seguro para subprocesos: ¿cómo se obtiene un contexto de gráficos?
- 20. Compartir historial entre paneles/ventanas
- 21. node.js - compartir sockets entre procesos
- 22. Compartir datos entre páginas html
- 23. Compartir búfer binario entre el servidor Node.js y el navegador
- 24. cómo compartir variables globales a través de subprocesos en python?
- 25. Javascript: compartir datos entre pestañas
- 26. cómo compartir la textura entre 2 contextos OpenGL?
- 27. Compartir una cookie entre dos sitios web
- 28. comunicación entre subprocesos en java
- 29. Compartir vistas parciales ASP.NET MVC entre proyectos
- 30. ¿Puedes compartir recursos entre las APK?
Hola, sufro de la sincronizacion de 2 hilos opengl Además de makeCurrent, ¿de qué otros debería ocuparme? ¿Hay algunos artículos que introducen este punto? – dragonfly
Para obtener una muestra completa, puede consultar este código fuente: https://github.com/klhurley/EffectsManager/blob/master/src/Android/Renderer.cpp –