背景:
做opengl 跨线程渲染的时候,避免了不了使用Fence机制其使用也很简单,今天我们就从源码角度看下Fence到底做了啥
Fence
C++ GL_APICALL GLsync GL_APIENTRY glFenceSync(GLenum condition, GLbitfield flags) GL_APICALL void GL_APIENTRY glDeleteSync(GLsync sync) GL_APICALL GLenum GL_APIENTRY glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) |
今天就从这个3个方法来看下源码里具体的实现
glFenceSync
C++ GL_APICALL GLsync GL_APIENTRY glFenceSync(GLenum condition, GLbitfield flags)
{
TRACE("(GLenum condition = 0x%X, GLbitfield flags = %X)", condition, flags);
es2::Context *context = es2::getContext();
if(context) {
return context->createFenceSync(condition, flags); }
return nullptr; } |
createFenceSync