Это то, что я хочу сделать с моим NSOpenGLView. В настоящее время NSOpenGLView покрывает всю область окна, и я бы хотел добавить кнопки, nsviews и изображения поверх NSOpenGLView. Я просмотрел сеть и обнаружил, что [myOpenGLView setWantsLayer:YES];
позволит мне делать такие вещи, как [myOpenGLView addSubView:someView]
.
Вот что я получаю в результате:
(Несколько плохой пример, поскольку я смотрел Family Guy, но доказывает тот факт, что буфер видеопамяти перехватывается здесь)
Как вы можете видеть, это искажает некоторый буфер видеопамяти на окне. Сейчас я занимался отладкой, и проблема в -setWantsLayer
. Как только я закомментирую эту строку в моем коде, все элементы OpenGL отображаются правильно.
Вот что я должен получить:
Итак, мой вопрос: как мне правильно отобразить мой вид OpenGL и в то же время -addSubViews
?
У Apple есть действительно хороший пример проекта этой работы под названием «LayerBackedOpenGLView» (http://developer.apple.com/library/mac/#samplecode/LayerBackedOpenGLView/Introduction/Intro.html), и я давно смотрю на него, и я не знаю, что я делаю по-другому в Я заметил, что вместо использования NSOpenGLView Apple использует NSView и изменяет класс на собственный класс, который подклассирует NSOpenGLView, в то время как я использую NSOpenGLView и изменяю класс на собственный класс, который снова подклассирует NSOpenGLView Не уверен, если это вызовет какие-либо проблемы, но я все еще получаю ту же проблему, если я изменю его на NSView.