Cogl是一个现代3D图形API,带有相关的实用程序API,旨在使用比OpenGL更面向对象的设计来展示3D图形硬件的功能。该库主要受到Clutter实际需求的驱动,但它不依赖于任何一个工具包,甚至不限于开发UI工具包。
我已经知道了常见gnome库的名称:cairo,pango,gtk,clutter和cogl很长一段时间,但最近我实际上发现了库的功能。并且gnome文档告诉我cogl可以以更多的方式绘制3D,如上面的引用所示。但我觉得很难开始。
那么如何使用cogl在vala中绘制一个3d立方体? 是否可以用杂乱的方式为立方体设置动画?
通过互联网浏览后,我找不到多少。所以我去Github看了一些其他人的代码,但大部分代码是用C语言制作的,似乎很难阅读。您能展示一些使用vala编写的示例或链接吗? (也可以在C中,但它使阅读更难一点)
提前致谢
答案 0 :(得分:3)
答案 1 :(得分:1)
CoglRenderer
的当前vapi文件中没有CoglContext
或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 :这里有一个使用cogl-2.0的Hello World
教程: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!)然后在找到它们时将矩阵放回原位。