В документации SCNView (здесь: https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNView_Class/index.html#//apple_ref/occ/instp/SCNView/eaglContext) говорится, что:Что такое подмножество OpenGL ES 3.0, поддерживаемого SceneKit?
SceneKit supports OpenGL ES 3.0, but some features are disabled when rendering in a OpenGL ES 3.0 context
я не мог найти где-нибудь, которые были отключены функции. Я хотел использовать свой собственный шейдер с SceneKit (назначая SCNProgram для моего материала), и я попытался использовать трехмерную текстуру. Но я получил следующее сообщение об ошибке:
SceneKit: error, C3DBaseTypeFromString: unknown type name 'sampler3D'
Таким образом, я предполагаю, что 3D текстуры являются частью отключенных функций, но я не мог найти подтверждение в любом месте. Должен ли я отказаться от SceneKit и делать все мои рендеринги с OpenGL вручную, просто для использования 3D-текстур?
Вопрос о бонусе: Почему Apple поддерживает только подмножество OpenGL ES 3.0 в SceneKit, поскольку iOS имеет полную поддержку?
Мне удалось заставить его работать, разделив контекст. Я имею в виду, что я создал контекст OpenGL и установил его как текущий с помощью EAGLContext.setCurrentContext (context) '. После этого я могу выполнить весь мой код настройки для отправки моих данных в виде 3D-текстуры на графическом процессоре. Установив контекст моего представления в тот же контекст 'scnView.eaglContext = context', SceneKit имеет доступ к моей текстуре, поместив следующий код в' handleBindingOfSymbol ("name_of_uniform_for_my_3D_texture") ':' glUniform1i (GLint (location), 0) '. Визуально это работает, но ошибка 'unknown type name 'sampler3D'' все еще здесь. – morph208