2

Cogl 是一种现代 3D 图形 API,具有相关的实用程序 API,旨在使用比 OpenGL 更面向对象的设计来展示 3D 图形硬件的功能。该库主要由 Clutter 的实际需求驱动,但它不依赖于任何一个工具包,甚至不限于开发 UI 工具包。

我很早就知道常见的 gnome 库的名称:cairo、pango、gtk、clutter 和 cogl,但最近我真正发现了这些库的作用。并且 gnome 文档刚刚告诉我,cogl 可以以更 oo 的方式绘制 3D,如上面的引用所示。但我发现很难开始。

那么如何使用 cogl 在 vala 中绘制 3d 立方体?是否可以为杂乱的立方体设置动画?

通过互联网查看后,我找不到太多。所以我去 Github 看看其他人的代码,但大部分代码都是用 C 编写的,看起来很难阅读。

你能展示一些例子或一些用vala写的例子的链接吗?(也可以在 C 中,但它使它更难阅读)

提前致谢

4

2 回答 2

3

我在 Vala 为 Cogl 写了一些例子。

链接:

希望,它可以是有用的。

于 2015-08-09T13:16:48.617 回答
1

当前 vapi 文件中没有CoglRendererCoglContext类用于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)时,您必须自己做很多设置代码(创建绘图上下文、创建帧缓冲区、创建绘图图元、创建绘图管道、绘制你的原语等)。

我不知道 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!),然后在你找到它们时将它们放回去。

于 2013-12-07T21:45:58.090 回答