- 浏览: 135807 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
datawarehouse:
datawarehouse 写道ngix 淘宝是基于这个开发了 ...
解密淘宝网的开源架构 -
datawarehouse:
ngix 淘宝是基于这个开发了一个自己的webserver吧。 ...
解密淘宝网的开源架构 -
eyelock:
我运行报错,,楼主能解答一下G,对swing不熟。
raphi ...
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧 -
lostsky_11:
楼主写出例子了么?物理碰撞部分可能跟你说的差不多渲染部分可以搜 ...
Where is my water 游戏算法 -
xouou_53320:
都是牛人
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
3D例子显示一个Cube和一个人物 不断旋转 具体底部底层API没有列出 只注视了每个语句的含义 显示了3D的大概逻辑流程 #include <stdio.h> #include <JGE.h> #include <JRenderer.h> #include <JLBFont.h> #include <JSprite.h> #include <JOBJModel.h> #include "GameApp.h" #include <JMD2Model.h> GameApp::GameApp() { mTexture = NULL; mBgTex = NULL; mBg = NULL; mPlayer = NULL; mGun = NULL; } GameApp::~GameApp() { } void GameApp::Create() { mAngle = 0.0f;//角度? mState = STATE_IDLE;//2D动画状态 JRenderer* renderer = JRenderer::GetInstance(); mTexture = renderer->LoadTexture("box.png");//方块图片 单面 mBgTex = renderer->LoadTexture("bg.png");//背景 mBg = new JQuad(mBgTex, 0, 0, 480, 272);//背景 mPlayer = new JMD2Model(); mPlayer->Load("tris.md2", "abarlith.png"); // load a MD2 character加载人物3D模型 mGun = new JMD2Model(); mGun->Load("weapon.md2", "weapon.png"); // load the character's weapon加载武器3D模型 if (mPlayer != NULL && mGun != NULL) { mPlayer->SetState(mState);//设置状态 mGun->SetState(mState); } renderer->SetFOV(60.0f);//设置视场 } void GameApp::Destroy() { SAFE_DELETE(mTexture); SAFE_DELETE(mBgTex); SAFE_DELETE(mBg); SAFE_DELETE(mPlayer); SAFE_DELETE(mGun); } 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; } int mNewState = mState;//改变状态上和左键 状态-1 if (engine->GetButtonClick(PSP_CTRL_UP) || engine->GetButtonClick(PSP_CTRL_LEFT)) { mNewState--; if (mNewState < STATE_IDLE) mNewState = STATE_FALING_FORWARD_DYING; } //改变状态下和右键状态+1 else if (engine->GetButtonClick(PSP_CTRL_DOWN) || engine->GetButtonClick(PSP_CTRL_RIGHT)) { mNewState++; if (mNewState > STATE_FALING_FORWARD_DYING) mNewState = STATE_IDLE; } if (mNewState != mState && mPlayer != NULL && mGun != NULL) { mState = mNewState; mPlayer->SetState(mState);//设置人物的状态 mGun->SetState(mState);//设置枪的状态 /* 人物的状态枚举 每个状态对应一个人物动作 比如跑步 走动 跳跃 下蹲 应该在如3DMax软件中定义 生成md2模型文件和切片图片 STATE_IDLE, STATE_RUNNING, STATE_SHOT_NOT_FALLING_DOWN, STATE_SHOT_IN_SHOULDER, STATE_JUMP, STATE_IDLE2, STATE_SHOT_FALLING_DOWN, STATE_IDLE3, STATE_IDLE4, STATE_CROUCHING, STATE_CROUCHING_CRAWL, STATE_IDLE_CROUCHING, STATE_KNEELING_DYING, STATE_FALLING_BACK_DYING, STATE_FALING_FORWARD_DYING, STATE_FALLING_BACK_SLOWLY_DYING */ } float dt = engine->GetDelta(); // get number of milliseconds passed since last frame mAngle += 1.0f*dt; // the frame rate is not fixed by default, so we use dt to do adjustments if (mAngle > M_PI*2.0f) // angles are in radian, so 2 PI is one full circle mAngle = 0.0f; //angles是弧度 这个定义不明确 2Pi是一圈??数学基础= =! mPlayer->Update(dt); // update model animation mGun->Update(dt);//更新人物的图片和枪的图片动画 } void GameApp::Render() { JRenderer* renderer = JRenderer::GetInstance(); renderer->Enable2D();//开启2D功能 renderer->RenderQuad(mBg, 0, 0);//画背景 renderer->Enable3D();//开启3D模型功能 renderer->PushMatrix();//矩阵? renderer->Translate(30.0f, 5.0f, -60.0f);//视角? 参数分别是 X,Y,Z坐标 从x,y,z点看模型的视角 z越大model越小x,y是横向的偏移 renderer->RotateX(-M_PI_2);//X轴旋转-Pi/2 应该是90度 默认的人物头朝向屏幕 90度后人物站起来了 adjust the model to the right orientation renderer->RotateZ(mAngle);//Z轴旋转运行时的角度 让人物循环旋转 mPlayer->Render();//画人物和枪 render the model 内部实现略 mGun->Render(); renderer->PopMatrix();//Pop矩阵? Vertex3D tris[] =// define a 3D cube 定义3D方块的顶点Vertex矩阵 { // float u, v; float x, y, z; //u?v? x,y,x后三个是矩阵的坐标 // top { 0.0f, 0.0f, -5.0f, 5.0f, 5.0f }, { 1.0f, 0.0f, 5.0f, 5.0f, 5.0f }, { 1.0f, 1.0f, 5.0f, 5.0f, -5.0f }, { 1.0f, 1.0f, 5.0f, 5.0f, -5.0f }, { 0.0f, 1.0f, -5.0f, 5.0f, -5.0f }, { 0.0f, 0.0f, -5.0f, 5.0f, 5.0f }, // front { 0.0f, 0.0f, 5.0f, -5.0f, 5.0f }, { 1.0f, 0.0f, 5.0f, 5.0f, 5.0f }, { 1.0f, 1.0f, -5.0f, 5.0f, 5.0f }, { 1.0f, 1.0f, -5.0f, 5.0f, 5.0f }, { 0.0f, 1.0f, -5.0f, -5.0f, 5.0f }, { 0.0f, 0.0f, 5.0f, -5.0f, 5.0f }, // right { 0.0f, 0.0f, 5.0f, 5.0f, -5.0f }, { 1.0f, 0.0f, 5.0f, 5.0f, 5.0f }, { 1.0f, 1.0f, 5.0f, -5.0f, 5.0f }, { 1.0f, 1.0f, 5.0f, -5.0f, 5.0f }, { 0.0f, 1.0f, 5.0f, -5.0f, -5.0f }, { 0.0f, 0.0f, 5.0f, 5.0f, -5.0f }, // left { 0.0f, 0.0f, -5.0f, -5.0f, 5.0f }, { 1.0f, 0.0f, -5.0f, 5.0f, 5.0f }, { 1.0f, 1.0f, -5.0f, 5.0f, -5.0f }, { 1.0f, 1.0f, -5.0f, 5.0f, -5.0f }, { 0.0f, 1.0f, -5.0f, -5.0f, -5.0f }, { 0.0f, 0.0f, -5.0f, -5.0f, 5.0f }, // bottom { 0.0f, 0.0f, 5.0f, -5.0f, 5.0f }, { 1.0f, 0.0f, -5.0f, -5.0f, 5.0f }, { 1.0f, 1.0f, -5.0f, -5.0f, -5.0f }, { 1.0f, 1.0f, -5.0f, -5.0f, -5.0f }, { 0.0f, 1.0f, 5.0f, -5.0f, -5.0f }, { 0.0f, 0.0f, 5.0f, -5.0f, 5.0f }, // back { 0.0f, 0.0f, 5.0f, 5.0f, -5.0f }, { 1.0f, 0.0f, 5.0f, -5.0f, -5.0f }, { 1.0f, 1.0f, -5.0f, -5.0f, -5.0f }, { 1.0f, 1.0f, -5.0f, -5.0f, -5.0f }, { 0.0f, 1.0f, -5.0f, 5.0f, -5.0f }, { 0.0f, 0.0f, 5.0f, 5.0f, -5.0f } }; renderer->PushMatrix();//又矩阵?没找到API的说明 调用的win的底层函数= =! renderer->Translate(-15.0f, 0.0f, -30.0f); renderer->RotateX(mAngle);//跟随程序运行着的角度旋转XYZ轴 renderer->RotateY(-mAngle); renderer->RotateZ(mAngle); renderer->RenderTriangles(mTexture, tris, 0, 12);//绘制cube 第一个参数是单面图片 第二个参数各个点坐标 0?12? render the 3D cube renderer->PopMatrix();//又Pop 干什么用的? } void GameApp::Pause() { } void GameApp::Resume() { }
发表评论
-
过年没事,一天时间写了一个是男人就撑住20秒的Java版
2012-01-24 13:21 3799每年过年都没事,都得写点小东西,今年是是男人就撑过20秒(20 ... -
Where is my water 游戏算法
2012-01-23 19:56 2112过年把Where is my water完了一遍,对这个游戏的 ... -
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
2010-02-16 23:03 11076Bug已经Fix~~ 注释已经补充 import jav ... -
俄罗斯方块:C++中的常用错误原因~~
2008-07-20 20:45 1321很久没有用C++写程序了。。用起来很不顺手! 出了问题不知道怎 ... -
疯狂游戏系列之(一)疯狂俄罗斯策划
2008-07-18 20:38 1492闲来无事,做一个PSP上的俄罗斯方块游戏,大致原则是两个字 疯 ... -
PSP程序开发例子解析(十二)InputSystem
2008-07-14 20:50 1070InputSystem例子掩饰了如何在程序中输入文字 #i ... -
PSP程序开发例子解析(十一)HGEParticles
2008-07-14 20:50 1054HGEParticles这个例子很BT 模仿WindowsMe ... -
PSP程序开发例子解析(十)HGEDistortionMesh
2008-07-14 20:49 1708HGEDistortionMesh例子应用了HGE包中的内容 ... -
PSP程序开发例子解析(八)Animator
2008-07-14 20:48 954GameApp.cpp #include <std ... -
PSP程序开发例子解析(七)DisplayingChinese
2008-07-14 20:46 962显示中文 加载点阵文件 没啥说的 就是不清楚点阵文件是哪来的= ... -
PSP程序开发例子解析(六)TrueTypeFont
2008-07-14 20:45 1060按照Windows的ttf字体显示文字。。跑不起来 略 #i ... -
PSP程序开发例子解析(五)Shapes
2008-07-14 20:44 918绘制各种形状 无话可说 #include <st ... -
PSP程序开发例子解析(四)Splines
2008-07-14 20:38 956第四个例子讲述了曲线 ... -
PSP程序开发例子解析(三)ResourceManager
2008-07-14 20:38 966太晚了 明天再写 弄个res文件没找到 换了个工程 copy源 ... -
PSP程序开发例子解析(二)Images
2008-07-14 20:37 1156第二个例子程序演示了 ... -
PSP程序开发例子解析(一)HelloWorld
2008-07-14 20:31 3024今天晚上把PSP的开发环境搭建了起来 并且看了看PSP的Hel ... -
关于BMP图片格式(部分垃圾代码)
2007-11-17 19:05 1348java 代码 做了个刷投票的程序 识别随即码图片的地方 ...
相关推荐
综上所述,PSP程序设计基础不仅涵盖了PSP的历史发展脉络、硬件架构细节,还包括软件开发环境及调试方法等多个方面。对于初学者来说,了解这些基础知识将有助于更好地掌握PSP开发技能,为未来的项目开发打下坚实的...
PSPSDK 是 PSP 游戏开发的软件开发套件,提供了必要的头文件、库文件和示例程序等工具。toolchain 是 PSP 游戏开发的编译器和链接器,负责将源代码编译成 PSP 可执行文件。 二、CYGWIN 的安装 要安装 CYGWIN,只...
【PSP编程开发环境的建立】涉及的主要知识点是PSP(PlayStation Portable)软件的开发流程,这包括在Visual Studio 2008(VS2008)和Eclipse集成开发环境中设置PSP的开发环境,以及编写和编译PSP程序的基本步骤。...
pspdev,有需要的下。 很好的一个psp编程工具 psp编程必备。
【PSP开发工具Miro Lua】是一款专为PSP(PlayStation Portable)平台设计的lua脚本开发环境,它为LUA爱好者提供了在PSP上编写、测试和运行lua程序的便利工具。LUA是一种轻量级的脚本语言,因其简洁的语法和强大的...
LightMP3 PSP音乐播放器是一款专为PlayStation ...总的来说,LightMP3 PSP音乐播放器的开发涵盖了音频处理、用户界面设计、系统资源管理等多个领域的技术知识,体现了软件工程师在开发嵌入式系统应用时的专业技能。
3. **兼容性**:不同的PSP型号可能需要不同的升级程序,确保使用的升级包是为您的设备型号定制的。 4. **风险与好处**:虽然直接升级简化了流程,但每次固件升级都可能带来一些不可预知的问题,比如某些自制软件...
2. **Eclipse**:一个强大的C/C++集成开发环境(IDE),用于编写、编译及调试PSP程序。 3. **Blender3D**:一个开源的3D建模工具,用于创建游戏中的3D资产。 这些工具构成了一个完整的PSP游戏开发流程。 #### ...
标题中的“psp 中文输入程序 源代码”指的是为PlayStation Portable(PSP)游戏掌机开发的中文输入法软件的原始编程代码。PSP是一款由索尼公司推出的便携式多媒体设备,它允许用户运行游戏、播放媒体以及进行其他...
PSP SDK(Software Development Kit)则是为开发PSP游戏和应用程序提供的核心工具集,它包含了编译器、库文件、头文件、文档、示例代码以及调试工具等,使得开发者能够创建自己的PSP软件。 **PSP SDK中的关键组成...
PSP自制软件开发利器,JGE 1.0 第3部分(由于太大分卷压缩)
6.XX Downgrader是一款给官方系统的PSP进行降级的程序,使用它能够将6.31/6.35/6.38/6.39/6.60官方系统的PSP降级至6.20/6.35系统。 现在6.60系统也终于能够通过降级来安装自制系统了! 使用方法: 1.把6.20...
### 汇编语言返回DOS系统方法:程序段前缀(PSP)与返回机制 #### 一、程序段前缀(PSP)介绍 在早期的个人计算机操作系统中,特别是MS-DOS环境下,程序段前缀(Program Segment Prefix, PSP)扮演着极其重要的角色。PSP...
### 使用Eclipse调试PSP程序的关键知识点...通过上述步骤,开发者可以有效地使用Eclipse 对PSP 程序进行调试,提高开发效率并减少错误。这对于从事PSP 游戏开发或者其他基于PSP 平台的应用开发的人员来说是非常有用的。
psp 6.60升级程序,适合从3.71m33 升级到6.60,把程序放到/psp/game/update文件夹内
2. **sdk**:SDK(Software Development Kit)是软件开发工具包,这里可能是用于开发PSP游戏或应用程序的工具和库,对于编程人员来说非常有用。 3. **FastRecovery**:快速恢复功能可能是指一种能够在设备出现问题...
《PSP官方系统6.61详解:兼容性与功能解析》 PSP(PlayStation Portable)是由日本索尼公司推出的便携式游戏机,自2004年首次发布以来,凭借其强大的游戏性能和多媒体功能,赢得了全球众多玩家的喜爱。在PSP的发展...
④「PSP 6.60 PRO-C 刷机程序」(仅适用6.60系统)
Develop for the PSP,看看国外同国内对PSP的距离,是一本学习PSP编程的书。
《软件开发过程PSP:构建高效能的个人开发体系》 在软件开发领域,PSP(Personal Software Process,个人软件过程)是一种系统化的方法,旨在提高软件工程师的生产力和软件质量。PSP作为SEI(Software Engineering ...