Рисовать 3D с помощью Cogl?
Cogl - это современный API-интерфейс для трехмерной графики со связанными API-интерфейсами утилит, разработанный для демонстрации возможностей аппаратного обеспечения 3D-графики с использованием более объектно-ориентированного проектирования, чем OpenGL. Библиотека в первую очередь движима практическими потребностями Clutter, но она не привязана к какому-либо одному инструментарию и даже не ограничена разработкой инструментария пользовательского интерфейса.
Я давно знал названия общих библиотек гномов: cairo, pango, gtk, clutter и cogl, но недавно я действительно узнал, что делали библиотеки. И документация gnome только что сказала мне, что cogl может рисовать 3D более необычно, как показано в приведенной выше цитате. Но мне трудно начать.
Итак, как я могу использовать Cogl, чтобы нарисовать 3D-куб в Вала? Можно ли оживить куб с помощью беспорядка?
Посмотрев в интернете, я не смог найти много. поэтому я пошел в Github, чтобы посмотреть на код других людей, но большая часть кода написана на C и, кажется, его трудно читать.
Можете ли вы показать некоторые примеры или ссылки на некоторые примеры, написанные на языке vala? (также может быть в C, но это немного затрудняет чтение)
заранее спасибо
2 ответа
Нет CoglRenderer
или же CoglContext
классы в текущем файле VAPI для cogl-1.0
,
Я не думаю, что вы можете даже инициализировать Cogl без них, что, как ни странно, я могу найти только в документации по cogl-2.0.
https://developer.gnome.org/cogl-2.0-experimental/stable/
Поскольку, похоже, нет никакого примера Vala и не так много примеров C, трудно задать ваш вопрос.
Вы, вероятно, должны спросить список рассылки Cogl.
Изменить: так как ваш вопрос был о Clutter + Cogl, здесь действительно есть пример Vala: https://wiki.gnome.org/Projects/Vala/ClutterSamples
Edit2: есть Hello World
учебник с использованием cogl-2.0 здесь: http://www.cogl3d.org/hello.html
Как вы можете видеть, уровень Cogl намного ниже, когда вы используете его автономно (без Clutter), вам придется самому выполнить множество настроек кода (создать контекст рисования, создать кадровый буфер, создать примитивы рисования, создать конвейер рисования, нарисовать ваши примитивы и т. д.).
Я не знаю, как работает Клаттер внутри, но я думаю, что он делает большую часть этой работы для вас.
В любом случае это не повредит, если вы сначала изучите немного OpenGL, так как Cogl является оболочкой для OpenGL.
Edit3: этот пост показывает, как интегрировать Cogle в Clutter: http://radialmind.blogspot.de/2012/02/cogl-or-opengl-for-3d-clutter-scenes.html
Так вот как вы выпрыгиваете из цикла беспорядка: определите собственного актера. Я сделал один в C, другой пример использует версию C++. Смотрите также здесь. Определите некоторые свойства, которые изменяют способ рендеринга и некоторые другие общие характеристики. Переопределить цикл рисования. Сохраните матрицы, определите свои собственные матрицы, вызовите свой собственный код для рисования в 3D (должен быть cogl!), А затем поместите матрицы обратно, как вы их нашли.
Я написал несколько примеров для Cogl в Vala.
Ссылки:
Надеюсь, это может быть полезно.