
游戏开发技术
文章平均质量分 53
mybloglucis009
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
XNA自己定义加载图资源的初始化配置工作
1.创建GraphicsDevice实例,作为IServiceProvider.AddService的参数2.实现IServiceProvider接口,添加GraphicsDevice到此接口的派生对象3.创建ContentManager传入IServiceProvider类型对象作为它的参数4.使用MSBuild构建.contentproj5.创建SpriteBatch,创建时,原创 2012-12-30 22:01:19 · 401 阅读 · 0 评论 -
XNA中文显示学习
学习XNA一段时间了,但是中文还是不能显示,感觉上XNA就象个婴儿一样脆弱,然后就仔细的去找了一遍关于中文显示的范例,开始说的是即时编译的方法,就是用xml编译需要的字库,然后显示,费时费力,看来没多少选择,所以我也没看这种方法,偶然翻看论坛,发现一个帖子,是中文显示类,我一开始认为可能和那个方法差不多,其实自己也在想用点阵这种低效率方法了,一看好像没进行什么编译,采用的是把字写到图片缓冲上,我一转载 2013-01-15 14:00:06 · 580 阅读 · 0 评论 -
DirectX3D画线接口ID3DXLine
原文地址:http://blog.youkuaiyun.com/rabbit729/article/details/6583871使用DrawPrimitive()绘制的线没法控制其线性和绘制虚线,为此DirectX3D提供了ID3DXLine接口用来绘制线。该接口中的HRESULT Draw( CONST D3DXVECTOR2* pVertexList, DWORD转载 2013-02-06 17:31:51 · 1719 阅读 · 0 评论 -
直线裁剪算法
此算法 就是Cyrus-Beck裁剪算法1.判断dx,dy是否为零作相应的简单处理,并返回2.下面通过例子说明第2步的原理,现在先给出原理如果P1P2与裁剪区域有交点,那么P1P2与裁剪区域存在交集,使得交集中的任一元素t同时满足下列不等式xmin ymin 其中,dx = x2 - x1, dy = y2 - y1,若(1)∩(2)= 空集原创 2013-02-18 14:00:24 · 1211 阅读 · 0 评论 -
WPF: 使用DrawVisual提高大数据量时的绘图性能
WPF: 使用DrawVisual提高大数据量时的绘图性能在WPF中绘制形状时,如果数据量大(例如一条Polyline有10万多个数据点),绘制过程会很慢。目前能想到的解决办法有:1. 将形状绘制在位图里。2. 升级到最新.net4.5,WPF性能提升不少(这个要赞) 3. 使用DrawVisual来实现画图。 下面主要谈一下DrawVisual的用法。Visu转载 2013-05-13 22:11:01 · 1955 阅读 · 1 评论 -
WPF中播放声音媒体文件
这段时间我们小组要给部门的Annual Meeting準备一个WPF的抽奖程序,为了增加程序的有趣性,我们在程序中需要播放背景音乐等。由於对之前从未使用过WPF,所以对其中的声音等媒体文件播放不是很清楚,对一些简单的问题也花了相对较长的时间去解决,现在将其总结在下麵,以供大家参考。1,使用SoundPlayer类SoundPlayer类位於System.Media命名空间下,它只能播放.w转载 2013-06-02 13:54:40 · 976 阅读 · 0 评论 -
DirectX 从内存加载图片
ifstream inFile(filename, ios::binary);inFile.seekg(0, ios::end);int len = inFile.tellg();inFile.close();BYTE* encodeBuffer = new BYTE[len];FILE *fp = fopen(filename.c_str(), "rb");len = f原创 2013-11-26 15:56:36 · 1725 阅读 · 0 评论 -
Direct3D中的2D
Background背景I have been reading alot of questions lately related to DirectX 8 and the exclusion of DirectDraw from the new API. Many people have fallen back to DX7. I can understand people usi转载 2013-11-26 21:39:17 · 699 阅读 · 0 评论 -
让HGE支持中文(2) - HGE中文输入
转自:http://blog.youkuaiyun.com/showlong/article/details/1675197狂郁闷ing...昨天写的东西发出来竟然没有文字...重新编写的时候也没有看到文字...哎狂倒啊,浪费我写了那么久.今天还得重来...日..这个优快云怎么搞的噢?算了.直接说怎么搞了,打字累...因为我所说的方法是直接改HGE的内核..转载 2013-11-27 14:10:40 · 545 阅读 · 0 评论 -
让HGE支持中文(1) - HGE中文显示
HGE是不款不错的2D引擎渲染引擎...为什么这样说呢...HGE目前没有物理,不过官方已经公布下一个版本将会有物理引擎进入.因此该版本将会是一个非常好的2D引擎代表作..期待ing...不过HGE是不支持中文的...这的确比较麻烦...有没有解决办法呢?答案是肯定的...下面我就有来讲讲怎么让HGE支持中文...我们先来搞定中文的显示,.再转载 2013-11-27 14:09:08 · 761 阅读 · 0 评论 -
让HGE支持中文(3) - HGE字符串处理
前面都已经讲了怎么请HGE支持并显示中文..另外呢.我们还需要的一个处理字符串的类..当然也可以不用.所以放到最后拿出来.不过当对于UNICODE与非UNICODE之间切来切去的时候.你不可能一直在那里改代码..这个时候CString就可以用到了.虽然CString可以放到HGE里使用.不过还是自己找一份比较好/CString属于ATL的东西转载 2013-11-27 14:14:14 · 585 阅读 · 0 评论 -
让HGE支持网络(1) - HGE网络基础
现在开始写让HGE支持网络的代码了。。。由于目前这部分代码本周刚开始写。。就是天今天。。不过想编译网络的话。你还得在 hge.h 文件中添了一行代码,1:并且要添加在 #include 前面 #define WIN32_LEAN_AND_MEAN#include 因为我们的网络接口将会引用到文件 winsock2.h.这是必须的。。转载 2013-11-27 14:15:16 · 492 阅读 · 0 评论 -
HGE中文显示最新修改 - 070717
天没事就把HGE中文的(hgeFontCN)修了一下..去除了一些不要的东西..这样使得内存占用小了一大节... 以前用12号字要用15M左右的内存.现在只需要9M了...我直接贴代码了...原理去看我以前发的文章...#pragma once#include "hge.h"#include "hgesprite.h"#i转载 2013-11-27 14:17:29 · 624 阅读 · 0 评论 -
使用DirectX截屏
如果截图变黑,请参考这一篇,DirectX截图黑屏的解决办法。网上有很多关于DirectX截屏的文章,但大都是屏幕截图,很少有窗口截图,本文则两者都涉及到,先讲如何截取整个屏幕,再讲如何截取某个窗口,其实二者的区别不大,只是某个参数的设置不同而已,最后我们还将扩展到任意区域的截图。首先看一下截屏用到的函数,最核心的当然是D3DXSaveSurfaceToFile,先看下函数原型转载 2013-11-27 14:53:32 · 1792 阅读 · 0 评论 -
DirectX截图黑屏的解决办法
好久没有更新博客了,今天开始继续耕耘。生活要继续工作要继续梦想也一定要继续!之前写过一篇关于DirectX截屏的文章,其中有网友留言提到了截图黑屏的问题,于是这些日子研究了一下,与大家一同分享。为什么会黑屏?一句话概括,黑屏是由于DDraw加速引起的!先说一下DirectX的显示原理,通常我们看到的屏幕上的数据,都是通过Primary Surface送至显示器的,什转载 2013-11-27 14:55:22 · 1610 阅读 · 0 评论 -
3D软引擎之三角形光栅化
昨天前天实现了三角形光栅化算法,然而在邻近三角形之间出现了裂缝,于是弄了一天,后来,查看了《3D游戏编程大师技巧》的源码的示例,一看,他那没有裂缝,我这代码是按照书本的思路去实现的,经过一翻挣扎把它的代码移植到自己的代码,再经过一翻大修改,F5调试运行,结果仍然有裂缝!我觉得奇怪了,于是再对照了一遍代码,原来还有一个编译开关,于是又把另一编译开关所在的代码复制过来,然后再修改,在修改过的过程中遇到原创 2015-05-31 13:02:37 · 1360 阅读 · 0 评论 -
三维旋转:旋转矩阵,欧拉角,四元数
转自:http://www.cnblogs.com/yiyezhai/p/3176725.html如何描述三维空间中刚体的旋转,是个有趣的问题。具体地说,就是刚体上的任意一个点P(x, y, z)围绕过原点的轴(i, j, k)旋转θ,求旋转后的点P\'(x\', y\', z\')。旋转矩阵旋转矩阵乘以点P的齐次坐标,得到旋转后的点P',因此旋转矩阵可以描述旋转,转载 2015-05-30 13:58:25 · 982 阅读 · 0 评论 -
A*寻路 -- 弗洛伊德(Floyd)算法
转:http://www.itweb2.com/article/system/317.htm 弗洛伊德(Floyd)算法过程:1、用D[v][w]记录每一对顶点的最短距离。2、依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否可用过该基点让这对顶点间的距离更小。算法理解:最短距离有三种情况:1、两点的直达距离最短。(如下图)2、两点间只通过一转载 2013-01-13 02:42:16 · 1402 阅读 · 0 评论 -
A*寻路 -- 算法优化
基本思路: 1二叉堆 2用version代替close open列表 3用精简的估计公式 4提前运算 5代码本身的优化。 这个寻路算法基本还没找到as3写的能超过他的。 Java代码 package { /** * ... * @author sliz http://game-dev转载 2013-01-13 02:43:15 · 1192 阅读 · 1 评论 -
A*寻路 -- 更加真实 的路径(二)
转:http://bbs.9ria.com/thread-95620-1-1.html 对于A*传统寻路的结果不平滑的问题,我们讨论了一种判断两点间是否存在障碍物的算法,并在用户点击鼠标选择了目的地后先判断起终点间是否存在障碍物,若不存在,则路径数组中将只具有一个终点节点;否则进行A*寻路运算。大致过程可用下面代码表示: Java代码 //判断起终点间是否存在转载 2013-01-13 02:41:21 · 3995 阅读 · 0 评论 -
XNA初始化重要对象概览
图中被红箭头指的对象是初始化时需要传入的服务ContenteManager: 初始化的时候需要传入IServiceProvider(相当于一个服务容器) 和由Contentmanager加载资源的目录路径 (例如,图片声音等等)SpriteManager需要传入GraphicsDevice对象(此对象是初始化关联显卡和控件的对象原创 2012-12-30 22:02:59 · 320 阅读 · 0 评论 -
利用MSBuild生成.xnb文件
projectRootElement = ProjectRootElement.Create(projectPath)//创建目录 Content和.contentproj文件projectRootElement.AddImport("$(MSBuildExtensionsPath)\\Microsoft\\XNA Game Studio\\" +原创 2012-12-30 22:04:16 · 1801 阅读 · 0 评论 -
纹理采样的理论与实现
苦于这方面的资料太少,于是自己推了一下!以平底三角形为例(三角形并无剪切)1。求出Pnl, Pnr的几何坐标(1)假定扫描线是水平的,即△P0P1P2从上到下光栅化的,因此起始的扫描线为P0P0,每扫描一次y每将增加一个像素单位∴yrn = yln = yn = y0 + n (1) (2)n表示第n条扫描线,yrn,yln已求出,现在求xln, xrn, uln,vln原创 2012-12-30 19:28:46 · 1075 阅读 · 0 评论 -
使用轴分离法对凸多边形进行碰撞检测的核心思想
1.如图,△ABC和△DEF相交,假设以△ABC为参考物,我们如何把顶点D移到直线BC上,并使其看起来合理?我们可以使△DEF沿BC的法向DG移动DG的长度,这样,就能得到我们所要的“看起来合理”2.△ABC和△DEF的每个顶点的坐标已知,因此各边的法向量容易求出,求出后我们把各边的法向量归一化,以便进行向量的计算。3.现在要求DG向量。如图,DF与BC交于H点,这样,向量DC在B原创 2012-12-30 15:27:24 · 528 阅读 · 0 评论 -
让我吐血的难题——XNA 中的Alpha混合
由于对XNA 的颜色混合使用不太理解,所以上MSDN搜到我吐血,头痛,呕吐,经过一翻对生命的折腾,问题终于得到了解决。。。。。。! 原来是我对XNA 的颜色混合使用不太适合。颜色合混本身并不难,难的是不会用XNA去表达!!!!!透明混合公式如下:最 终颜色 = 源颜色 X 源颜色透明值 + 目标颜色 X (255 - 源颜色透明值)要是在DirectX,我早就实原创 2012-12-30 21:44:51 · 660 阅读 · 0 评论 -
2D点绕原点旋转的公式
y1 = y0 * cos(a) + x0 * sin(a);x1 = x0 * cos(a) - y0 * sin(a); a: 表示要旋转的角度但编程时,使用的数据库,它的参数一般是弧度,因此,先将角度转为弧度再传入参数原创 2012-12-30 22:20:08 · 2678 阅读 · 0 评论 -
详解Bresenham算法原理(1)
今晚心血来潮想起写直线的算法。第一次接直线算法的就是看《Windows游戏编程大师技巧》的时候,它解说了直线光栅化的其中一个快速算法,叫做Bresenham算法,刚开始看的时候以为是什么了不起,当我了解后,其实也没什么了不起,用不着高等数学的知识,只要高中的知识就够了。解释上图: 1.现在开始教程,先给出直线方程的斜截式 y = kx + b (k是斜率,b是在y轴上的截距)原创 2012-12-30 19:41:14 · 3715 阅读 · 1 评论 -
鼠标为中心缩放控件的底层代码
昨天朋友建议我在游戏引擎中实现缩放控件的功能,于是自己花了两天的时间研究了以鼠标为中心缩放控件的底层代码,代码的实现并不依赖于任何语言,也就是说可以在任何语言中使用,以下是代码实现的思想:分析: 先来分析一下效果,这种以鼠标为中心坐标的缩放功能是通过Flash研究得出的,它的思想是这样, 当使用放大镜时,鼠标点击画布它就会以鼠标坐标为中心等比例缩放对象,现在通过下面原创 2012-12-30 22:00:18 · 706 阅读 · 0 评论 -
对XNA中的混合的理解
(1)公式 outColor = sourceColor * sourceAlpha + DestColor * InvSourceColor 是Alpha混合的公式 sourceColor * sourceAlpha表示左操作数 DestColor * InvSourceColor表示右操作数 对应的XNA代码(XNA4.0) Blend bs = new Blend();原创 2012-12-30 23:04:33 · 357 阅读 · 0 评论 -
详解Bresenham算法原理(2)
下而实现的代码 /// /// 没有剪切的版本 /// private void GetLine(CPoint P0, CPoint P1, ref Color[] buffer, int width, int height) { CPoint ptExtr原创 2012-12-30 19:45:06 · 662 阅读 · 0 评论 -
RPG游戏中阻碍半透明遮挡(C# XNA)
这个是用XNA实现的,花了一天时间完成了,这个不是用Shader实现的,而是用C#实现的,效果完美,这么多年的难题终于得到解决,注意,这个实现是使用了阻碍遮挡半透明!下面是代码部分private void CheckMaskVer2() { // ////Check out of bound /原创 2012-12-30 19:47:37 · 864 阅读 · 0 评论 -
RPG游戏中阻碍遮挡(XNA HLSL实现)
昨天用C#代码实现了 《梦幻西游》中的阻碍半透明效果,今天使用了hlsl的像素差色器实现了这种效果,但更加完美。在用HLSL之前本身想放弃使用的了,因为一来自己对HLSL不熟悉,二来用HLSL实现起来有点麻烦,最重要的就是担心性能,因为像素着色器处理的是一个像素,不过上网搜了下,着色器的处理速度很快,因为是并行计算,不像使用代码那样(循环处理),所是速度超快!!!下面是代码//C#代码原创 2012-12-30 19:59:13 · 676 阅读 · 0 评论 -
2.5D的ACT类型游戏碰撞检测
今天想了一下如题的处理方法,附图解释上图是我进入《地下地与勇士》 这个游戏玩了一会进行分析。它的规则是那样:碰撞检测第一阶段:当玩家发招的时候就产生一个第一次碰撞的矩形 (第一次碰撞),如果碰撞检测成功,就表示与敌人脚部的第一次碰撞(敌人一次碰撞)的矩形相交,则表示敌人在受攻击范围内第二阶段 :如果敌人在受攻击范围内,则必须检测发招的矩形区域与敌人的受击范围进行检测。原创 2012-12-30 21:51:54 · 1698 阅读 · 0 评论 -
XNA中的Alpha混合
What Is Color Blending?Other Versions XNA Game Studio 4.0XNA Game Studio 3.1XNA Game Studio 3.0XNA Game Studio 2.01 out of 2 rated this helpful- Rate this topic转载 2012-12-30 22:17:28 · 514 阅读 · 0 评论 -
绘制直线和直线剪切
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Xna.Framework;using Microsoft.Xna.Framework.Graphics;namespace XnaGeometric{ publ原创 2013-01-04 13:49:58 · 327 阅读 · 0 评论 -
A*寻路 -- 更加真实 的路径(一)
地址:http://chaimzane.iteye.com/blog/1629039对于A*寻路算法,可能是游戏开发者讨论最多的话题之一,很多游戏都会用到它来实现游戏角色的寻路。那么我这篇帖子的价值何在呢?先来看看传统A*算法存在的问题:1.尴尬的Z型路径 当你在用A*算法实现了角色行走逻辑后,点击一个目标点,虽然你起点和目标点间没有任何障碍物,但角色还TMD蛋疼地进行转载 2013-01-13 02:33:38 · 2987 阅读 · 0 评论 -
3D软引擎之深度排序
花了不少时间去实现了这个功能,大多问题都出现在低级错误,看来以后要提醒十二分精神!错误的原因是: void CTriangle2DUtils::DrawSolidGeneralClipZOrder( D3DXVECTOR3 p0, D3DXVECTOR3 p1, D3DXVECTOR3 p2, int color ){ if (p0.y > p1.y) Math3D::Swap(p原创 2015-06-01 22:35:43 · 823 阅读 · 0 评论