使用HGE时管理资源的问题..

[HGE]-源码分析-1 引擎源码构成 hge是个效果不错的2D游戏引擎。 官网:http://hge.relishgames.com/       优点:1免费,2稳定性好,渲染效果不错,3支持硬件加速(名字的由来)4使用简单       对于源码来说,阅读也相对容易,网上可以找到一些源码分析文章。 整个代码架构参考这张图: 游戏都由两部分组成       引擎+资源 更具体的在这里:http://hge.re 阅读详情

现在用HGE写个游戏玩玩...

当我在切换场景的时候发现了个问题...

由于我们设置的程序的Enter和Leave成队组成,这样便于切换场景...

不过呢..有些时候当到了某一个State(游戏场景),需要载入一些数据...

Texture_Load()便成了我们平时要用的,为什么呢,

例如,你在做登陆的时候,还没有登陆不可能需要把所有资源载入吧,除非你的资源本来就小,并且载入资是在构造里才行.

这个时候问题就来了..

Texture_Load()我原以为会像其它引擎一样自动识别文件是否已经被输入的..

结果不然.需要自己处理.以免资源重复载入..

为此我写了一个类:

如下:

ResServer.h文件:

#include  " hge.h "
#include 
" hgesprite.h "
#include 
< map >

#pragma  pack (push)
#pragma  pack (1)

class  tResServer
{
public :
    tResServer(
void );
    
virtual   ~ tResServer( void );

public :
    
void         LoadRes( int  id,  const  TCHAR *  file);
    
void         Release();
    HTEXTURE    GetRes(
int  id);
    hgeSprite
*     MakeSprite( int  id,  float  x,  float  y,  float  w,  float  h);

private :
    
static  tResServer *  pAddr;
    std::map
<   int , HTEXTURE  >     pTexture;

public :
    
static  tResServer *  Instance();
};

inline tResServer
*  tResServer::Instance()
{
    
return  pAddr;
}

欢迎转载.转载请注明出处:原创地址

 ResServer.cpp文件:

#include  " . esserver.h "
#include 
" kernelserver.h "

tResServer
*  tResServer::pAddr  =   0 ;

tResServer::tResServer(
void )
{
    pAddr 
=   this ;
}

tResServer::
~ tResServer( void )
{
}

void  tResServer::LoadRes( int  id,  const  TCHAR *  file)
{
    HTEXTURE tex 
=  GetRes(id);
    
if  ( ! tex)
    {
        HTEXTURE tex 
=  tKernelServer::Instance() -> Device() -> Texture_Load(file);
        pTexture.insert(std::map
<   int , HTEXTURE  > ::value_type(id, tex));
    }
}

void  tResServer::Release()
{
    HGE
*  pDevice  =  tKernelServer::Instance() -> Device();

    
for  (std::map <   int , HTEXTURE  > ::iterator i  =  pTexture.begin(); i  !=  pTexture.end();  ++ i)
        pDevice
-> Texture_Free(i -> second);
    
    pTexture.clear();
}

HTEXTURE tResServer::GetRes(
int  id)
{
    std::map
<   int , HTEXTURE  > ::iterator i  =  pTexture.find(id);
    
if  (i  !=  pTexture.end())
        
return  i -> second;
    
else
        
return   0 ;
}

hgeSprite
*  tResServer::MakeSprite( int  id,  float  x,  float  y,  float  w,  float  h)
{
    HTEXTURE tex 
=  GetRes(id);
    
if  (tex)
        
return   new  hgeSprite(tex, x, y, w, h);
    
else
        
return   0 ;
}

 

当然.用了以上代码是不会编过的..

因为tKernelServer是我已经封装HGE了的个核心服务..不过上面的代码只用了HGE*...

应该很好理解.

Delphi集成HGE游戏引擎绘图控件实战 Delphi作为一款经典的RAD(快速应用开发)平台,凭借其强大的VCL(Visual Component Library)框架,在Windows桌面图形界面开发中占据重要地位。VCL不仅提供了丰富的UI控件,还封装了Windows GDI(图形设备接口),使开发者能够高效构建可视化应用。在底层图形处理方面,Delphi通过GDI或GDI+实现绘图操作,支持基本的图形绘制、图像处理和窗口渲染功能。开发者可通过TCanvas类进行控件或窗体的自定义绘制,实现图形界面的个性化设计。 阅读详情

相关推荐

HGE-1.81-DX9游戏引擎开发资源包

在当今游戏开发领域中,引擎的选择是至关重要的一步。HGE游戏引擎版本1.81在众多游戏开发者中备受关注。本章节旨在向读者介绍HGE 1.81的核心特点以及它如何在现代游戏开发中占有一席之地。DirectX 9是微软公司于2003年发布的一套多媒体编程接口,其主要特性包括着色器模型2.0(支持像素着色器和顶点着色器)和高级纹理格式(如FP16纹理)。这些特性为游戏开发者提供了更加强大的图形渲染能力,使得游戏中的光影效果、材质和贴图更加真实和细腻。

weixin_35753431的博客 802

想写一个游戏引擎了

一直在用HGE总觉得各种不便,没有Scene的概念,切换繁琐,music只支持w3t什么的根本找不到素材,还不支持中文显示,学一下DDraw,自己争取做一个!

InsZVA的专栏 799

HGE中文帮助文档完整版详解与实战指南

HGE(Haaf’s Game Engine)是一款专为2D游戏开发设计的轻量级C++引擎,其核心理念聚焦于高性能、模块化与简洁性。引擎采用事件驱动的主循环架构,将渲染、输入、音频与定时器系统高度集成,通过单一接口初始化,极大简化了开发入口。上述代码体现了HGE的回调注册机制——开发者只需注册帧更新与渲染函数,引擎便自动驱动游戏循环。底层基于DirectX 8/9实现硬件加速渲染,支持Alpha混合、纹理映射与高效精灵绘制,同时封装了BASS音频库,实现多通道音效播放。各子系统通过。

weixin_30653091的博客 942

HGE使用日志

    这些日志都是很早前陆续写的,拿出来分享经验:2006-8-15       7:30开始学习HGE引擎。       从以前的接触中知道,HGE引擎基于DX8。       创建HGE最简单程序的步骤:1.  定义HGE类型的指针,用来保存引擎指针。2.  调用 hgeCreate函数得到HGE引擎指针----这是个标准的C语言函数,从以前阅读这个引擎的部分代码得知

loop in codes 4627

Delphi与HGE结合实现3D粒子效果和中文显示

HGE(Haaf’s Game Engine)引擎是一款专为2D游戏开发而设计的开源游戏引擎。它的特点之一是轻量级,这意味着它加载和运行速度快,占用资源少,特别适合初学者和独立游戏开发者使用。HGE提供了诸多开箱即用的功能,包括但不限于:硬件加速图形渲染音频播放与管理基本输入处理粒子系统和动画支持网络编程接口这些功能极大地减少了游戏开发的复杂性,允许开发者专注于游戏设计和玩法逻辑的实现。

weixin_29092787的博客 902

Hadoop生态系统-新手快速入门(含HDFS、HBase系统架构)

Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量...

Hadoop环境搭建教程 471

【HGE引擎】学习HGE遇到的若干问题及解决方式记录 Q&A

Q1: 错误 3 error LNK2019: 无法解析的外部符号 "public: __thiscall hgeSprite::hgeSprite(unsigned long,float,float,float,float)" (??0hgeSprite@@QAE@KMMMM@Z),该符号在函数 _WinMain@16 中被引用 hge_tut01.obj A1: 没有加载相关的l

走向CTO的路上... 3149

自制非接触式静电探测仪:从振动电容原理到微弱信号检测实践

微弱信号检测是电子测量领域的核心挑战之一,尤其在需要避免物理接触或防止干扰的场景中。其基本原理在于将难以直接获取的微小物理量(如电流、电压)通过传感器转换为电信号,再经过放大、滤波等处理进行提取。锁相放大技术是解决这一问题的关键手段,它利用参考信号与目标信号的同步性,从强噪声背景中恢复出有效信息,极大提升了信噪比和测量灵敏度。这项技术的工程价值在于实现了对纳安级电流、微伏级电压等高难度参数的可靠测量。在静电防护、材料表面电位分析、生物电信号采集等应用场景中,非接触式测量需求广泛。本文聚焦的基于振动电容原理的

weixin_32349093的博客 273

HGE 的Resource Manager

以下资料翻译自:http://gpwiki.org/index.php/HGE:Tutorials:Resource_Manager Resource Manager The resource manager is a way of defining textures, sprites, sounds, and other items that your application mak

loop in codes 3046

【Ensp】FTP服务器设置和FTP解析

大部分的多媒体多媒体应用协议,如SIP,FTP,NetMeeting协议等,使用约定的固定端口来初始化一个控制连接,再动态地选择端口用于数据传输,并且这些端口选择是不可预测的。在防火墙设置时,可以通过ASPF(应用层报文过滤)中的Server Map表来满足多通道协议的正常工作,它正常检测应用层报文信息,并动态地根据报文内容创建和删除临时的Server Map表项,以允许其它非约定端口通过防火墙。(5)我们可以在路由器或能访问ftp服务器的设备上,通过cli命令行的方式来访问ftp服务器。

进击的小小白 1862

用VASPKIT+Quantum Espresso高效绘制能带图:从K点路径生成到可视化全流程

本文详细介绍了如何整合VASPKIT与Quantum Espresso(QE)软件,构建一套高效的能带计算与可视化工作流。通过VASPKIT自动化生成高对称K点路径,结合QE完成自洽与非自洽计算,并利用gnuplot绘制发表级能带图。该流程极大提升了材料电子结构研究的效率与可重复性,是进行DFT能带计算的实用指南。

weixin_29294975的博客 163

【HGE引擎】API使用一些诡异现象

Lz在使用HGE相关引擎的api时,遇到一个第一次见过的弹出警告,下图: 稍微解释下:运行时 检查失败,函数调用方式不对... 知道这点就差不多了,可是该如何下手呢? 方法一: 在当前的工程下,找到 属性-> C/C++ ->高级-> 调用约定 处,原来是__cdecl(/Gd)就改为__stdcall(/Gd),否则,反之。这样基本能解决一些常规的问题,但是其实此次使用的针对于h

走向CTO的路上... 1159

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

221

HGE重新架构资源管理

在HGE1.81版本开始修改结构。 为什么不在HGE加强版本上面修复,原因很简单,这个版本的作者D3D功底一般,封装方面的技术一般。不但没有使引擎更符合大型游戏的开发,而且使很多方面搞得相当复杂。不利于引擎的以后强化。 所以最理想的还是从官方的原版开始修改引擎基础部分。使之更符合大型游戏的开发。 资源管理方面,HGE提供了一个从Zip压缩文件加载的接口类。其实任何一个商业游戏都是不...

arzzsc1461的博客 207

179、瑞芯微RK3588在边缘盒子中的多摄同步架构——基于PLL的帧同步与曝光同步的实测调优

第一,RK3588的多摄同步,硬件上确实支持,但软件配置的坑比想象的多。第三,传感器的tPD差异是最大的不确定因素,选型时尽量选同一批次,而且要在量产前做全温测试——我遇到过低温下tPD变化超过3微秒的情况,直接导致同步失效。我遇到过一批IMX415,tPD差异达到±8微秒,直接超出SYNC控制器的补偿范围,最后只能挑芯片,把差异小的装到同一台设备里。别用100MHz,虽然分辨率更高,但高频信号在PCB走线上更容易引入EMI,边缘盒子的结构件往往没有很好的屏蔽,实测100MHz下同步信号边沿抖动明显增大。

zzfmlxs的博客 36

Cadence OrCAD Capture软件启动过程卡死且无法恢复的解决方法

如下图所示Cadence OrCAD Capture软件在启动后出现卡死的现象,且等待后无法自动恢复,需要强行关闭,再次启动依然卡死。

fydar的博客 4043

HGE系列之六 管中窥豹(资源管理)

<br />    HGE系列之六管中窥豹(资源管理)<br /> <br />  记的上次浮光掠影的讲了一些HGE中的基础类别,不知大家了解了多少,仔细看过的朋友肯定知道当时在讲述一个类别的构造函数时我打了个马虎,直接略过了,原因说的好像是比较繁琐,想起来了吗?对,就是hgeStringTable ,为了免去“避重就轻”的嫌疑,我想这次也该好好的将他说一说了(但说实话,讲解这个函数确实比较繁琐……),而hgeStringTable 是HGE资源管理中的一个基础(Base)类别,所以我想顺着讲述一下HGE的

tkokof1的专栏 3598

音频——DAC 性能测试

codec DAC 性能测试方法

tyustli 2235

开源项目HGE常见问题解决方案

开源项目HGE常见问题解决方案 项目基础介绍 HGE(HyperGraph Engine)是一个高性能的图计算引擎,主要用于处理大规模图数据。该项目旨在提供一个灵活且高效的框架,支持图的存储、查询、分析和可视化。HGE的主要编程语言是C++,但也提供了Python和Java的绑定接口,方便不同语言背景的开发者使用。 新手使用注意事项及解决方案 1. 编译环境配置问题 问题描述: 新手在首次编译HG...

gitblog_00943的博客 916

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HGE基础教程(1)

作者:寰子 来源:http://www.hgechina.com/ 前言: 写道: 无意中发现了HGE中文社区,听朋友介绍,认识了HGE,然后开始对它进行研究,并使用HGE开始制作游戏。 因为我所得的资料基本上都是来源于各位高手的无私翻译,所以,我打算也做一些贡献出来,

python二级题库 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HGE 游戏引擎

 HGE 是一个硬件加速(Hardware accelerated)的 2D 游戏引擎(Game Engine),HGE 是一个富有特性的中间件,可以用于开发任何类型的 2D 游戏。HGE 封装性良好,以至于你仅仅需要关系游戏逻辑(Game Logic),而不需要在意 DirectX,Windows 消息循环等。HGE 架构在 DirectX 8.0 之上,能够跑在大多数的 Windows

dadalan的专栏 2237

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HGE中的Texture操作

HGE是一款很不错的2D游戏引擎,对于游戏引擎的入门是很不错的选择。 前段时间把HGE重新封装了下,好符合自己的使用习惯。在封装的过程中,遇到一些对Texture的操作,卡了很久,在此记录遇到的问题,以备查阅,希望也能给你带来帮助, Texture函数列表 Texture_Create:创建一个空纹理,可以指定高度宽度,但是创建后的纹理大小可能比指定的宽度高度大,原因暂时还不

胡老哈的学习记录 2457

网狐游戏MFC嵌套hge

 #pragma once #include #include "StdAfx.h" class CHgeGlobal { public:  ST_INSTANCE(CHgeGlobal);  bool Init(HWND hWnd);  void Fini();  void Render();  HGE* GetHge(); private:  ST_STRUCT

yaozzuo的专栏 1201
上一篇: 将1到9平均分成3组,每组3个数,要求这三组数组成的三位数都是完全平方数,打印这样的三个数
下一篇: 让HGE支持中文(1) - HGE中文显示
ShowLong
博客等级 码龄21年 61粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值