void GL_APIENTRY glDrawArraysInstancedANGLE( GLenum mode, GLint first, GLsizei count, GLsizei primcount) { const struct PPB_OpenGLES2InstancedArrays* ext = glGetInstancedArraysInterfacePPAPI(); if (ext) ext->DrawArraysInstancedANGLE( glGetCurrentContextPPAPI(), mode, first, count, primcount); }
void GL_APIENTRY glDrawElementsInstancedANGLE( GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount) { const struct PPB_OpenGLES2InstancedArrays* ext = glGetInstancedArraysInterfacePPAPI(); if (ext) ext->DrawElementsInstancedANGLE( glGetCurrentContextPPAPI(), mode, count, type, indices, primcount); }
bool Ppapi::setInterfaces(PP_Instance _instance, const PPB_Instance* _instInterface, const PPB_Graphics3D* _graphicsInterface, PostSwapBuffersFn _postSwapBuffers) { BX_TRACE("PPAPI Interfaces"); m_instance = _instance; m_instInterface = _instInterface; m_graphicsInterface = _graphicsInterface; m_instancedArrays = glGetInstancedArraysInterfacePPAPI(); m_query = glGetQueryInterfacePPAPI(); m_postSwapBuffers = _postSwapBuffers; int32_t attribs[] = { PP_GRAPHICS3DATTRIB_ALPHA_SIZE, 8, PP_GRAPHICS3DATTRIB_DEPTH_SIZE, 24, PP_GRAPHICS3DATTRIB_STENCIL_SIZE, 8, PP_GRAPHICS3DATTRIB_SAMPLES, 0, PP_GRAPHICS3DATTRIB_SAMPLE_BUFFERS, 0, PP_GRAPHICS3DATTRIB_WIDTH, BGFX_DEFAULT_WIDTH, PP_GRAPHICS3DATTRIB_HEIGHT, BGFX_DEFAULT_HEIGHT, PP_GRAPHICS3DATTRIB_NONE }; m_context = m_graphicsInterface->Create(m_instance, 0, attribs); if (0 == m_context) { BX_TRACE("Failed to create context!"); return false; } m_instInterface->BindGraphics(m_instance, m_context); glSetCurrentContextPPAPI(m_context); m_graphicsInterface->SwapBuffers(m_context, naclSwapComplete); if (NULL != m_instancedArrays) { glVertexAttribDivisor = naclVertexAttribDivisor; glDrawArraysInstanced = naclDrawArraysInstanced; glDrawElementsInstanced = naclDrawElementsInstanced; } if (NULL != m_query) { glGenQueries = naclGenQueries; glDeleteQueries = naclDeleteQueries; glBeginQuery = naclBeginQuery; glEndQuery = naclEndQuery; glGetQueryObjectiv = naclGetQueryObjectiv; glGetQueryObjectui64v = naclGetQueryObjectui64v; } // Prevent render thread creation. RenderFrame::Enum result = renderFrame(); return RenderFrame::NoContext == result; }
void GL_APIENTRY glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) { const struct PPB_OpenGLES2InstancedArrays* ext = glGetInstancedArraysInterfacePPAPI(); if (ext) ext->VertexAttribDivisorANGLE(glGetCurrentContextPPAPI(), index, divisor); }