游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3561|回复: 0

新的HGPTest测试程序(2004.10.3)

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2004-10-3 13:42:00 | 显示全部楼层 |阅读模式
HGP是用于一般2D图片的显示,源图必须是PSD格式。支持PSD格式的多层与整体透明度、ALPHA等、无2次幂限制、但不能当做贴图使用。这个新的示例可以通过数字键1-8来选择显示指定层。

如果显卡不支持非2次幂贴图,程序会自动拆分成多个贴图来实现。
如果显卡支持非2次幂尺寸贴图,程序便不会拆分图片。


打开HGPTest工程、MainUnit.CPP文件,复制以下内容即可。

注:1.需要把windows/fons/下的impact.ttf复制到hgptest.exe、5.hgp所在目录
  2.由于PSD解码器是按照Adobe Photoshop 6 开发文档编写的,所以对Photoshop 7/8的支持可能有问题。
----------------------------------------------------------------------------------------------------
#include<hgl/hgl.h>
#include<hgl/hgp.h>
#include<hgl/OpenGL.H>
#include<hgl/Font.H>

using namespace hgl;
class Test:public FlowObject
{
    HGP *hgp;                                               //定义一个HGP图片处理类
    Font *fnt;                                              //定义一个字符处理程序
    wchar_t str[32];
    wchar_t name[32];

private:

    void OnCharProc(wchar_t ch)
    {
        if(ch>='1'&&ch<='8')
        {
            hgp->SetShow(false);                                //设置所有层都不显示
            hgp->Layer[ch-'1'].Visible=true;                    //设置指定层显示

            wcscpy(str,L"Only show ? layer");
            str[10]=ch-1;

            wcscpy(name,L"Layer Name: ");
            wcscat(name,hgp->Layer[ch-'1'].Name.wc_str());
        }
    }

public:

    Test()
    {
        fnt=LoadFont("impact.ttf",32,32);                   //加载一个字库,并将渲染大小设为32x32

        hgp=new HGP(L"5.hgp");                              //创建HGP图片处理程序,并定义文件名

        To2DMode(640,480);                                  //设置显示模式为2D,并将画面解析度设为640x480

        OnChar=OnCharProc;                                  //设置字符输入的处理程序为OnCharProc

        wcscpy(str,L&quotlease press 1 - 8");
        wcscpy(name,L"<All Layer>");
    }

    ~Test()
    {
        delete hgp;                                         //删除HGP图片处理程序
        delete fnt;                                         //删除字体处理程序
    }

    void Update()       //本对象刷新处理程序
    {
        ClearScreen();                                      //清屏

        hgp->Draw((640-hgp->Width)/2,(480-hgp->Height)/2);  //显示图片

        fnt->DrawString(0,0,str);                           //显示提示信息
        fnt->DrawString(0,32,name);                         //显示层次名称
    }
};

void GameMain(char *)
{
    Application->GameName   =L"HGP测试";
    Application->GameCode   =L"HGPTest";
    Application->ProjectFile=L"HGPTest.cmproj";

    if(!Application->Init())return;                     //初始化应用程序

    Application->flow.SetStart(new Test);               //设置起始流程

    Application->Run();                                 //开始运行
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 09:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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