2015-07-19 1 views
0

Я использую следующий пример плагина ppapi, который отображает вращающийся куб с openGL: https://chromium.googlesource.com/chromium/src/ppapi/+/master/examples/gles2_spinning_cube.Несколько плагинов OpenGL ppapi на одной веб-странице

Я могу вставлять это на веб-страницу, запущенную в Chrome, и все работает отлично, как ожидалось. Код моей страницы HTML идентичен здесь: https://chromium.googlesource.com/chromium/src/ppapi/+/master/examples/gles2_spinning_cube/gles2_spinning_cube.html

Однако, если добавить еще один элемент embed HTML, чтобы загрузить один и тот же плагин дважды на одной и той же странице, только второй embed показывает вращающийся куб. Первая вставка отображает один кадр перед остановкой.

<embed id="plugin" type="application/x-ppapi-example-gles2-spinning-cube" width="800" height="600"/> 
<embed id="plugin2" type="application/x-ppapi-example-gles2-spinning-cube" width="800" height="600"/> 

Поддерживает ли Chrome несколько плагинов ppapi на одной и той же веб-странице? Если это должно работать нормально, тогда кто-то поможет мне определить, почему это происходит - это потому, что у меня несколько контекстов OpenGL или что-то еще? Fwiw, я на Ubuntu, и я могу попробовать в Windows/Mac для сравнения при необходимости. Я использую --register-pepper-plugin с Chrome.

В конечном счете, я хочу использовать это с CEF (https://bitbucket.org/chromiumembedded/cef), но поскольку это не работает с Chrome, я хочу сначала разобраться в этом вопросе, а затем перейти на CEF.

ответ

1

Да, Chrome поддерживает несколько плагинов ppapi на одной странице, и это было связано с отсутствием вызова glSetCurrentContextPPAPI в примере кода ppapi. Он должен был быть следующим:

void DemoInstance::Paint(int32_t result) { 
    if (result != PP_OK || !context_) 
    return; 

    glSetCurrentContextPPAPI(context_->pp_resource()); // missing from example 

    cube_.UpdateForTimeDelta(0.02f); 
    cube_.Draw(); 
    context_->SwapBuffers(callback_factory_.NewCallback(&DemoInstance::Paint)); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^