第二个例子程序演示了如何在屏幕上绘制图片 附上源码 变化不大 很简单的几句代码搞定了
1.头文件GameApp.h
#ifndef _GAMEAPP_H_
#define _GAMEAPP_H_
#include <JApp.h>
class JQuad;//JQuad定义了图片上的显示范围 比如很多的小图片存为了一个大图片 在大图片上指定显示的坐标
class JSprite;//动画 似乎没用到
class JTexture;//把一个图片读成了一个JTexture = =!里面不晓得有什么内容 没有doc可看
class GameApp: public JApp
{
private:
JTexture* mBgTex;//整个背景的图片
JTexture* mSpriteTex;//2个人物的图片
JQuad* mBg;//定义了整个背景的大小
JQuad* mBoy;//男孩在人物图片上的大小
JQuad* mGirl;//女孩在人物图片上的大小
public:
GameApp();
virtual ~GameApp();
virtual void Create();
virtual void Destroy();
virtual void Update();
virtual void Render();
virtual void Pause();
virtual void Resume();
};
#endif
2.源码文件GameApp.cpp
#include <stdio.h>
#include <JGE.h>
#include <JRenderer.h>
#include <JLBFont.h>
#include <JSprite.h>
#include <JFileSystem.h>
#include "GameApp.h"
GameApp::GameApp()
{
mBgTex = NULL;
mBg = NULL;
mSpriteTex = NULL;
mBoy = NULL;
mGirl = NULL;//都给它设成NULL干啥 没有意义啊
GameApp::~GameApp()
{
}
//程序启动
void GameApp::Create()
{
JRenderer* renderer = JRenderer::GetInstance();
// Load background texture (texture format can be PNG, JPG or GIF)
mBgTex = renderer->LoadTexture("bg.jpg");//初始化加载背景图片 可以PNG JPG GIF的 开发的API封装的很好 都提供的了高层的API 没有暴露什么底层的东西= =! 看来之前我对图片处理的考虑有点多虑了 能运行上100M的3D游戏 应该不会太在乎内存消耗 不泄露就行
// Load texture for the characters (use TEX_TYPE_USE_VRAM to load texture into VRAM on PSP and this can speed up the rendering)
mSpriteTex = renderer->LoadTexture("planet.png", TEX_TYPE_USE_VRAM);//用这个参数来加速
//JQuad定义了一个范围 在没BgTex上 从左上角到右下角 看代码知道了PSP屏幕的尺寸为480*272
mBg = new JQuad(mBgTex, 0, 0, 480, 272); // Create background quad for rendering.
// Now let's create the image quads for the characters. The two characters are stored in one texture
// so we have to know the location and size of each one to make the quads.
mBoy = new JQuad(mSpriteTex, 0, 0, 67, 88);//同样对男孩的区域定义范围
mBoy->SetHotSpot(33.5f, 44.0f); // Set the pivot point to the middle.定义了这个图片的核心坐标 这里定义为中心 在旋转的时候围绕中心旋转 恩
mGirl = new JQuad(mSpriteTex, 68, 0, 68, 90);//女孩的图片从68开始越过了男孩的图片
mGirl->SetHotSpot(34.0f, 45.0f);//同样设置中心为HotSpot
}
void GameApp::Destroy()
{
SAFE_DELETE(mBgTex);//调用了一个宏 在JTypes.h里面:#define SAFE_DELETE(x) if (x) { delete x; x = NULL; } 另有文章说释放JTexture需要用什么engine.什么 应该效果是一样的mEngine->FreeMusic(mMusic);
SAFE_DELETE(mBg);
SAFE_DELETE(mSpriteTex);
SAFE_DELETE(mBoy);
SAFE_DELETE(mGirl);
}
//Update方法没有变化
void GameApp::Update()
{
JGE* engine = JGE::GetInstance();
if (engine->GetButtonClick(PSP_CTRL_TRIANGLE)) // Do a screen shot when the TRIANGLE button is pressed
{
char s[80];
sprintf(s, "ms0:/screenshot.png");
JRenderer::GetInstance()->ScreenShot(s);
}
if (engine->GetButtonClick(PSP_CTRL_CROSS)) // Exit when the CROSS button is pressed
{
engine->End();
return;
}
}
void GameApp::Render()
{
JRenderer* renderer = JRenderer::GetInstance();
renderer->RenderQuad(mBg, 0, 0);//具体画屏幕了 绘制整个背景 画mBg的范围JQuad
renderer->RenderQuad(mBoy, 33.5, 44, 0.0f, 1.0f, 1.0f); // Scale down the characters a little bit when rendering.
renderer->RenderQuad(mGirl, 320, 235, 0.0f, 0.7f, 0.7f);//参数分别为x点 y点 左上角开始计算 0.0f为旋转角度 没弄明白这个单位是什么 0.7f 和0.7f是x轴和y轴的缩放比例1是按照原大小0.7f是缩小了
Sleep(1);//自己加的 纯粹是为了减少CPU占用 否则一运行CPU就满了 似乎这个函数在PSP中不支持
}
void GameApp::Pause()
{
}
void GameApp::Resume()
{
}
第二个例子很简单结束了 上图
分享到:
相关推荐
综上所述,PSP程序设计基础不仅涵盖了PSP的历史发展脉络、硬件架构细节,还包括软件开发环境及调试方法等多个方面。对于初学者来说,了解这些基础知识将有助于更好地掌握PSP开发技能,为未来的项目开发打下坚实的...
PSPSDK 是 PSP 游戏开发的软件开发套件,提供了必要的头文件、库文件和示例程序等工具。toolchain 是 PSP 游戏开发的编译器和链接器,负责将源代码编译成 PSP 可执行文件。 二、CYGWIN 的安装 要安装 CYGWIN,只...
pspdev,有需要的下。 很好的一个psp编程工具 psp编程必备。
【PSP编程开发环境的建立】涉及的主要知识点是PSP(PlayStation Portable)软件的开发流程,这包括在Visual Studio 2008(VS2008)和Eclipse集成开发环境中设置PSP的开发环境,以及编写和编译PSP程序的基本步骤。...
【PSP开发工具Miro Lua】是一款专为PSP(PlayStation Portable)平台设计的lua脚本开发环境,它为LUA爱好者提供了在PSP上编写、测试和运行lua程序的便利工具。LUA是一种轻量级的脚本语言,因其简洁的语法和强大的...
标题中的“psp 中文输入程序 源代码”指的是为PlayStation Portable(PSP)游戏掌机开发的中文输入法软件的原始编程代码。PSP是一款由索尼公司推出的便携式多媒体设备,它允许用户运行游戏、播放媒体以及进行其他...
标题中的“psp5.50直接升级6.60程序”指的是PlayStation Portable(PSP)游戏设备的固件升级过程。PSP是一款由索尼公司推出的掌上游戏机,其系统固件版本的更新旨在提供新功能、优化性能以及修复已知问题。在这个...
PSP SDK(Software Development Kit)则是为开发PSP游戏和应用程序提供的核心工具集,它包含了编译器、库文件、头文件、文档、示例代码以及调试工具等,使得开发者能够创建自己的PSP软件。 **PSP SDK中的关键组成...
### 汇编语言返回DOS系统方法:程序段前缀(PSP)与返回机制 #### 一、程序段前缀(PSP)介绍 在早期的个人计算机操作系统中,特别是MS-DOS环境下,程序段前缀(Program Segment Prefix, PSP)扮演着极其重要的角色。PSP...
### 使用Eclipse调试PSP程序的关键知识点...通过上述步骤,开发者可以有效地使用Eclipse 对PSP 程序进行调试,提高开发效率并减少错误。这对于从事PSP 游戏开发或者其他基于PSP 平台的应用开发的人员来说是非常有用的。
2. **Eclipse**:一个强大的C/C++集成开发环境(IDE),用于编写、编译及调试PSP程序。 3. **Blender3D**:一个开源的3D建模工具,用于创建游戏中的3D资产。 这些工具构成了一个完整的PSP游戏开发流程。 #### ...
Develop for the PSP,看看国外同国内对PSP的距离,是一本学习PSP编程的书。
6.XX Downgrader是一款给官方系统的PSP进行降级的程序,使用它能够将6.31/6.35/6.38/6.39/6.60官方系统的PSP降级至6.20/6.35系统。 现在6.60系统也终于能够通过降级来安装自制系统了! 使用方法: 1.把6.20...
psp 6.60升级程序,适合从3.71m33 升级到6.60,把程序放到/psp/game/update文件夹内
《软件开发过程PSP:构建高效能的个人开发体系》 在软件开发领域,PSP(Personal Software Process,个人软件过程)是一种系统化的方法,旨在提高软件工程师的生产力和软件质量。PSP作为SEI(Software Engineering ...
国外一个教授用psp做并行计算的书 Chapter 1: Introduction Chapter 2: Overview of the PSP Chapter 3: Quickies Chapter 4: Taking Apart Your PSP Chapter 5: Getting Online: Configuring Your PSP for ...
BFMLoaderV100_PSP_ 是一个专为PSP(PlayStation Portable)平台设计的软件加载器,由西方科学团队开发。这个加载器的主要功能是处理和加载BFM格式的文件,BFM全称可能是"Binary Format for Multimedia"或类似的...
PSP自制软件开发利器,JGE 1.0 第3部分(由于太大分卷压缩)
《PSP官方系统6.61详解:兼容性与功能解析》 PSP(PlayStation Portable)是由日本索尼公司推出的便携式游戏机,自2004年首次发布以来,凭借其强大的游戏性能和多媒体功能,赢得了全球众多玩家的喜爱。在PSP的发展...
标题中的"PSP刷机.rar"指的是为PlayStation Portable(PSP)掌上游戏机进行固件更新或系统修改的过程,通常是为了安装自制软件、增强功能或者运行未授权的游戏。这个压缩包文件可能包含了用于刷机的所有必要工具和...