Corange:基于SDL和OpenGL纯C语言3D游戏引擎

Corange

简介

C++编写的游戏引擎随处可见,而纯C语言编写的游戏引擎确实非常稀罕。
Corange是一个用C语言和OpenGL标准编写的游戏引擎。在不牺牲性能前提下提供丰富的表现力、方便进行技术原型测试。它包括一个强劲的渲染器和一系列3D图形演示。

Youtube演示视频

特点

  • 小巧、简单、强劲、跨平台(Windows、Linux、Mac OSX)
  • 资源清晰易用 、UI、 实体管理机制
  • 流行的延迟渲染技术(Deferred rendering)

内容

这个项目是作者为了提高C语言技能进行的一系列3D图形方面的技术和效果的实验平台。它算不上是开箱可用的或者即插即用的,但是其中包含了大多数3D图形方面涉及到的内容:

  • 延迟渲染(Deferred Rendering)
  • 界面渲染
  • 文本渲染
  • 多光源
  • 后期效果处理(Post effect)
  • 屏幕空间环境光遮蔽(SSAO)
  • 阴影投射(Shadow Mapping)
  • 颜色纠正
  • 骨骼动画
  • 反向动力学
  • 碰撞检测
  • OpenCL支持
  • 资源、UI、实体管理机制
  • 地形
  • 支持dds、wav、bmp、obj、smd等格式的文件装载
  • 数学和网格

等等…

使用和发布

此项目目前只算是个人项目,会存在大量的Bug,未完成的特性和有点混乱的代码。仍处于可能会有大规模改动的半成品阶段。作者更建议大家和一起沟通并加入项目开发,而不是直接使用。与Unity这样的游戏引擎相比,Corange更象是XNA那样使用各种图形API特性的框架。

如果这个项目吸引了你,作者给出了下列事项可以帮助你快速开始:

  • 首先看看项目的demo代码:这可以让你对如何使用Corange有一个概念。
  • 文档确实少,所以先看头文件在看C文件。文档虽然少,但代码大部分时候还挺清晰的。

Corange不隐藏任何东西,OpenGL和SDL的调用都使用了命名空间以便你可以访问到这些基础接口。corange_init 和 corange_finish相当清晰和短小,你可以不直接调用它们而只使用你需要的部分。

结构都没有使用它们的指针去做类型定义。这确实只是个人偏好问题,但作者承认这样做确实导致了更多的数据被压到堆栈中,只是现在还不想为这些事情烦心。

资源、界面和实体的管理是引擎中重要的部分。它们主要是让你获取和保存资源(模型、纹理——文件系统中的对象)和实体(灯光、摄像机、引擎对象)和UI元素。他们在销毁时会清除内存,让你在代码的任何位置都能得到它们的指针。

Corange的命名空间还有点乱,经常出现像”error”、”warning”、”vec2″和”image”这样的命名。它不算是一个通用的库,但作者仍试图能让使用者快速从中得到需要部分的代码。

Demo

  • renderers:演示了 Shaders,阴影,和动画方面的渲染。
  • metaballs:使用 OpenCL/OpenGL 指令渲染的金属球。
  • noise:使用shader在屏幕上绘制基于噪声的图案。 可以产生重复的柏林噪声。
  • platformer:基本的动作游戏,有非常完整的注释。
  • sea:海面、船和碰撞检测。
  • scotland:演示了地形系统。
  • tessellation:演示了OpenGL 4的曲面细分技术。

官方网站:http://www.theorangeduck.com/page/projects
开源地址:https://github.com/orangeduck/Corange

1 2 收藏

资源整理者简介:骷髅

简介还没来得及写 :) 个人主页 · 贡献了3个资源 · 1


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer