请选择 进入手机版 | 继续访问电脑版
查看: 2483|回复: 26

[开发工具] 如何用C3引擎显示3D或者2D资源 -- C3引擎使用入门(初级篇)

[复制链接]
最佳答案
0 
果是果果的果 发表于 2013-6-5 17:28:46 | 显示全部楼层 |阅读模式
如何用C3引擎显示3D或者2D资源 -- C3引擎使用入门(初级篇)


引言:C3引擎可以比较方便的开发2D或者2.5D的游戏。这个系列的文章将从各个小小的实例或者问题的角度出发,介绍如何使用C3引擎开发游戏。
就像程序员刚入门时候,都开始学习写HelloWorld一样,从简单开始动手写代码,通过写简单代码最快速高效的掌握编程语言,熟悉API(应用程序接口)

,提高编程水平。这篇文章就简单介绍一个小功能,构建一个最简单的WIN32框架,在框架中实现用C3引擎显示一个美工已经制作好的资源。


编程语言:C++
编译器:VS2010


// 首先是初始化C3引擎
if (!CMyBitmap::Init3DEx(hWnd, nSceneWidth, nSceneHeight, szResPath))
{
   return false;
}

【解析】hWnd可以由MFC窗口句柄,或者Win32调用CreateWindow得到的窗口句柄。
   nSceneWidth就是hWnd窗口句柄对应窗口的宽度像素值
   nSceneHeight就是hWnd窗口句柄对应窗口的高度像素值
   szResPath为游戏程序的所在目录,一般可以由GetModuleFileName函数得到。
【建议】笔者建议写游戏使用一套固定的初始化代码作为游戏编写的框架,所有的C3游戏,都使用相同的框架,完成所有的初始化工作。喜欢完美的读者可

以自己编写符合自己口味的框架,喜欢偷懒学习为主的读者,可以直接下载本文末尾附带的说明中提供的Demogame.rar中的工程作为框架。其中

的"DemoGame"目录就是使用Win32平台创建窗口的框架代码,可以不做任何修改即可使用。"C3Application"目录中的代码是游戏的功能代码,每次新项目可

以删除所有不需要的本件,只留下C3Application.vcxproj、C3Application.cpp、C3Application.h等基础的文件。以这些工程文件为基础,稍作修改(删

除无用的#include语句、无效的代码等等),就可以跟着这篇文章来理解C3引擎如何显示3D或者2D资源的编程方法。
      另外,框架还可以使用下面地址(http://wiki.c3.91.com/index.php? ... 5%B1%82SDK%E5%92%8C

%E5%B7%A5%E5%85%B7%E5%8C%85)中的"完整的C3Engine_Windows游戏范例工程框架"下载使用。程序员可以根据自己的喜好自行选择最适合自己的框架进行

开发。


// 其次是初始化C3的游戏资源全局变量
g_objGameDataSet.Init(szResPath);

【解析】g_objGameDataSet对象是C3内部创建的,由游戏开发者Init3DEx之后,再显式调用g_objGameDataSet.Init来初始化资源数据,C3会根据情况自动

内部加载处理ini配置下的所有的资源文件。

上面是C3引擎初始化必须的步骤,而后是不停进行Render渲染的操作,在笔者建议的Demogame.rar的框架中,定时渲染由CC3Aapplication::DoIdle()函数

中实现。游戏开发者可以在这个函数中修改代码,实现自己需要的功能。在本篇中,可以在这个函数中增加唯一一个功能,就是绘制一个片状3D的弩兵资源

(资源下载见尾部说明)。

// 再后初始化加载我们这个示例需要的弩兵3D资源
C3DSimpleObj* pSimpleObj = Simple3DObjCreate(10000);
【建议】建议创建一个管理器对象来对pSimpleObj对象进行管理存储,这个示例中,只有一个C3资源做显示演示的过程讲解,所以就不必要创建对象管理器

了。


// 最后是渲染C3资源的循环过程
C3进行渲染必须的步骤如下:

1. GameDataSetQuery().Process();
解析:这个是C3引擎内部解析资源函数,必须在渲染函数的第一步显式调用。否则会渲染失败,结果窗口中不会有任何显示。

2.    CMyBitmap::Begin3D();
   CMyBitmap::ClearBuffer(true, true, _COLOR_DARKGRAY);
解析:这个步骤也是必须的,是渲染之前准备的第二个步骤。

3. 开始绘制资源,我们这篇文章的核心代码。
pSimpleObj->SetFrame(0);

D3DXMATRIX matIdentity;
D3DXMatrixIdentity(&matIdentity);
D3DXMATRIX matPos;
D3DXMatrixIdentity(&matPos);
matPos._41 = 100;   // 3D世界的X坐标
matPos._42 = 800;   // 3D世界的Y坐标
matPos._43 = 100;   // 3D世界的Z坐标
pSimpleObj->Draw3D(matPos, matIdentity);

4. 循环的第四个步骤是结束渲染后调用的C3底层函数
CMyBitmap::End3D();
CMyBitmap::Flip();



代码说明:
本章做的是技术指导,因此没有提供完整的示例工程,工程需要读者自行创建,或者直接在wiki.c3.91.com中下载现成的DEMO工程基础上修改。


资源说明:
C3引擎需要的美工资源是自定义的格式,具体美工资源制作获取途径,本篇不做讨论,可以参考“C3游戏资源生产”等C3技术支持文档资料。

游客,如果您要查看本帖隐藏内容请回复
最佳答案
0 
helpmsg 发表于 2013-7-17 04:41:31 | 显示全部楼层

RE: 如何用C3引擎显示3D或者2D资源 -- C3引擎使用入门(初级篇)

这里有些文章官方找不到哦??
难道这里是首发?
最佳答案
0 
wende1 发表于 2013-8-8 15:16:16 | 显示全部楼层
听上去很不错啊,看看先
最佳答案
0 
vanehu 发表于 2013-8-9 09:40:45 | 显示全部楼层
c3的代码在哪呢
最佳答案
0 
sjyzhang 发表于 2013-8-23 11:04:55 | 显示全部楼层
看上不不错哦  
最佳答案
0 
haliluya 发表于 2013-8-29 21:39:39 | 显示全部楼层
这里有些文章官方找不到哦??
难道这里是首发?
最佳答案
0 
yshlin 发表于 2013-9-4 09:07:44 | 显示全部楼层
C3的东西,要收藏
最佳答案
0 
liubin121051 发表于 2013-9-4 12:41:16 | 显示全部楼层
只为学习学习
最佳答案
0 
wahaha168 发表于 2013-9-21 16:31:38 | 显示全部楼层

只为学习学习
最佳答案
0 
androw3349 发表于 2013-11-9 17:39:52 | 显示全部楼层
RE: 如何用C3引擎显示3D或者2D资源 -- C3引擎使用入门(初级篇) [修改]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

推荐阅读 More>

© 2001-2015 9秒社团

合作伙伴

公司简介 | 联系方式
COPYRIGHT©2015 ZHONGQINGLONGTU NETWORK CO.LTD ALL RIGHTS RESERVED.ICP备11023195号-4
北京中清龙图网络技术有限公司
返回顶部 返回列表