游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6659|回复: 16

我也来献丑吧-献给新手的礼物,我自己开发的2D图形引

[复制链接]

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
发表于 2005-11-20 18:21:00 | 显示全部楼层 |阅读模式
这是我自己开发的2D图形引擎,用的DX9,虽然还比较简陋,不过基本功能还是有的,

用于开发一般游戏足够了,这是我的一套引擎中的一个,这套引擎还包括声音引擎和文

件读取引擎(其实是打包和解包引擎,我自己写的格式)还有工具若干,不过先发图形

引擎,以后再发剩下的~
首先声明一下,我发表这个引擎并不是想跟大家比技术,只是想给大家提供点方便和给

新手一点思路,如果大家觉得我的引擎差也请不要骂,谢谢~

下面先给大家看看效果,这是我自己做的一个仿制的石器时代的客户端,窗口模式下有

200FPS+,全屏下500FPS+,空跑有1000FPS+。

开发环境要求:
1、DX9 SDK
2、.net环境(vb.net/c#)
下面是个简单的教程:
1、创建一个新的窗口工程
2、添加引用,选择本引擎
3、加入下面代码:
Private TextP(0) As GEngine.GEngine.StrC
'TextP()变量表示图形引擎画的文字,不管需不需要文字都必须申明
Private GamePath As String = System.IO.Path.GetDirectoryName

(Application.ExecutablePath) & "\"
'表示程序启动路径,为了以后方便
Private GEngine As GEngine.GEngine
'申明本引擎
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load
        GEngine = New GEngine.GEngine(Me, 800, 600, 60, 16, GamePath) '表示

在程序窗口上画图,全屏,分辨率800*600,刷新率60,16位颜色,窗口模式请参考我网

站上的说明文档,地址在下面
        Render = True '告诉程序要画图
        GEngine.CreateNewBuffer("c:\ff.bmp", 800, 600, 0, 0, True, True)
        '创建图象缓存区,读取c:\ff.bmp到缓存区,定义大小为800*600,位置在(0

,0),第一个True表示要画这个缓存区,False则不画,第二个表示这个图中的纯黑色

为透明色,False则不透明,这个函数返回值为所创建的缓存区的索引值
        ReDim TextP(1)
        With TextP(0)
            .Color = System.Drawing.Color.Yellow
            .str = "Hello World!我的第一个DirectDraw9程序!"
            .X = 10
            .Y = 10
            .Gueltig = True
        End With
        With TextP(1)
            .Color = System.Drawing.Color.Red
            .str = "测试文本"
            .X = 10
            .Y = 50
            .Gueltig = True
        End With
        GEngine.PrintStr(TextP) '传递给引擎要在屏幕上显示的文字,就算不输出

文字也必须存在,否则出错
        Me.Show()
        Mainloop()
End Sub
Private Sub MainLoop() '这个过程叫做主循环,因为DirectX需要不停的在屏幕上刷

新图象,所以必须用循环
        Do '主循环
            GEngine.Render() '这个是引擎的渲染函数,用来在屏幕上画图
            Application.DoEvents() '这个函数的作用是叫程序处理其他事件,如果

没这个程序就会出现假死状态,也就是没有反应
        Loop
End Sub   
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As

System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        '在退出程序时应该释放所占用的内存,下面是标准格式
        GEngine.DisposeAllBuffer()
        GEngine.DisposeDD()
End Sub
这样,一个最简单的DX程序就完成了,看截图吧(由于没有做按键判断,所以只有用

alt+f4关闭程序,请大家在测试的时候注意了):

我的c:\ff.bmp就是这副被我改过数据文件的大海战客户端的截图。
只要自己再添加其他的createnewbuffer函数就可以随意添加图形缓存,最后添加的缓

存区将在最上面。当然我的引擎肯定才不只这点功能,他可以更改图形缓存的位图、位

置和渲染区域,输出文字(个人认为效果不错哦)等等功能,具体的内容请看我网站上

的说明文档,我在这里只是抛块烂砖头。我还写了一些配合我引擎使用的工具过程和函

数,包括如何用我的引擎实现动画等,如果大家反映好的话我就继续发布
    引擎下载
我一样推崇开源,原码和说明文档请到我的网站下载:
http://www.liiir1985.de

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-11-20 19:45:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

没人帮我顶吗?

0

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2005-11-20 20:47:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

不错啊~~~

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-11-21 15:34:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形


了不起。会画画。

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-11-21 16:54:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

会画画?

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2005-11-22 00:04:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

你的网站不是由你的画吗?
能不能放一些例子游戏出来看看。?

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-11-22 00:11:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

例子啊?
我现在写了的就只有那个仿制的石器时代,数据文件太大了~
要不这样吧,我把它简化一下,就包括一个UI,一个选择人物那个带动画的~

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-11-22 02:05:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

现在发布例程,首先说明一下,代码里面没什么注释,不过程序也相对简单~
例程数据使用的我自己写的格式,附带了解包工具,你们可以把数据文件解包出来方便理解程序~
另外,除了GEngine.dll是图形引擎之外,SEngine.dll是声音引擎,IOC.dll是我的打包文件的解包器
这个例程展示了UI的做法和动画的实现,952KB
下载

29

主题

205

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
发表于 2005-11-22 09:40:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

相当不错,不知道目前引擎是否支持旋转或者位移的功能?
还有类似定时移动或物体的功能?比如:我要让一个物体用5秒从0,0的位置移动到100,0的位置,我只需要告诉这个物体移动时间和移动目的位置,其它事情都由它自己来完成,因为这些小功能可能用在做小游戏上非常合适。
还有打包程序,能不能解包到内存中,直接让DX读取内存的数据,而不是通过文件呢?
……我可能提的问题太多了,还请楼主见谅

20

主题

451

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
 楼主| 发表于 2005-11-22 16:04:00 | 显示全部楼层

Re:我也来献丑吧-献给新手的礼物,我自己开发的2D图形

呵呵,一点都不多,关于你的问题,位移问题现在引擎只有一个简单的移动过程,就是直接移动到某个地方,我是在编游戏时扩展的,没写在引擎里~
关于读到内存我也想到过,不过我不知道在DX中具体如何实现,呵呵~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 18:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表