HGE游戏引擎之hgeQuad结构体的使用(用于渲染图片)
HGE基本的渲染图元是hgeQuad (Quad is the basic HGE graphic primitive),其中有一个hgeVertex成员结构,它用来描述图元顶点信息。The hgeVertex structure is used to describe vertices of which HGE graphic primitives consist.两个结构信息如下:
struct hgeQuad
{
hgeVertex v[4];
HTEXTURE tex;
int blend;
};
struct hgeVertex
{
float x, y;
float z;
DWORD col;
float tx, ty;
};
其中,x,y被描述为屏幕坐标,tx,ty被描述为纹理坐标,col被描述为颜色。创建一组顶点,每个顶点包含了位置坐标,和纹理坐标(纹理坐标一般为0--1),还有颜色等信息。为什么会有屏幕坐标很纹理坐标呢,一个点在屏幕上有坐标,一个矩形区域需要把一张图片映射进来,如果采用纹理方式,就需要为每一个点指定一个二维的坐标,hgeQuad就采用了四个纹理坐标,存在hgeVertex中,这样就可以从一张纹理图中切割一部分来渲染。这四个顶点分别从左上角开始顺时针表示一个RECT
利用hgeQuad显示图片的过程:
1. 用Texture_Load载入外部文件作为纹理。hgeQuad quad; quad.tex=hge->Texture_Load("particles.png");
2. 设置hgeQuad的纹理坐标,窗口坐标,以及渲染模式。
quad.blend=BLEND_ALPHAADD | BLEND_COLORMUL| BLEND_ZWRITE;
3. 每一帧都调用 Gfx_RenderQuad函数,这个函数用hge->System_SetState()设置的。
通过小精灵hgeSprite和HTEXTURE配合也可以进行图形渲染,
hgeSprite方法:
| Constructors | Create and initalize a hgeSprite object. |
| Operators | hgeSprite operators. |
| Render | Renders sprite to the screen. |
| RenderEx | Renders sprite with scaling and rotation. |
| RenderStretch | Renders stretched sprite. |
| Render4V | Renders sprite into arbitrary quad on the screen. |
| SetTexture | Sets the texture to use for the sprite. |
| SetTextureRect | Sets the texture region to use for the sprite. |
| SetColor | Sets tint and alpha for the specified vertex or entire sprite. |
| SetZ | Sets Z-order for the specified vertex or entire sprite. |
| SetBlendMode | Sets the sprite blending mode. |
| SetHotSpot | Sets the sprite anchor point. |
| SetFlip | Flips the sprite horizontally and/or vertically. |
| GetTexture | Returns the current sprite texture. |
| GetTextureRect | Returns the current texture region used for the sprite. |
| GetColor | Returns color of the specified sprite vertex. |
| GetZ | Returns Z-order of the specified sprite vertex. |
| GetBlendMode | Returns the current sprite blending mode. |
| GetHotSpot | Returns the sprite anchor point. |
| GetFlip | Returns the current sprite flipping. |
| GetWidth | Returns the sprite width. |
| GetHeight | Returns the sprite height. |
| GetBoundingBox | Returns the sprite bounding box. |
| GetBoundingBoxEx | Returns the scaled and rotated sprite bounding box. |
typedef DWORD HTEXTURE;
也就是说HTEXTURE实际上就是一个纹理的指针
渲染过程很简单,初始化:
HTEXTURE tex1; hgeSprite *spr;
tex1=hge->Texture_Load("1.jpg");
spr=new hgeSprite(tex1,0,0,800,600); //初始化图片精灵,后四个参数分别是,起始位置X,起始位置Y,图片宽,图片高。
在渲染函数中:
hge->Gfx_BeginScene(); //开始渲染 hge->Gfx_Clear(0xFFFFFFFF); //以某种颜色清屏幕 spr->Render(10,10); //在指定的位置上显示精灵 spr->SetColor(0xFFFF0000); //设置hgesprite的渲染颜色是红色,前两位是透明度a,后面一次是r,g,b hge->Gfx_EndScene(); //结束渲染
HGE游戏引擎之hgeQuad结构体的使用(用于渲染图片)的更多相关文章
- 对HGE游戏引擎的一次封装
HGE游戏引擎是一个开源2D游戏引擎,基于directX. 它的渲染及逻辑是基于帧回调的框架模式, 其提供一些主要的图像操作和输入控制功能. 我在之前写一个2D游戏的时候对它整个框架进行了一次封装,非 ...
- HGE游戏引擎之实战篇,渐变的游戏开场
#include <hge.h> #include "menuitem.h" //#include <hgefont.h> #include <hge ...
- 游戏引擎架构 (Jason Gregory 著)
第一部分 基础 第1章 导论 (已看) 第2章 专业工具 (已看) 第3章 游戏软件工程基础 (已看) 第4章 游戏所需的三维数学 (已看) 第二部分 低阶引擎系统 第5章 游戏支持系统 (已看) 第 ...
- Swift 的类、结构体、枚举等的构造过程Initialization(下)
类的继承和构造过程 类里面的全部存储型属性--包含全部继承自父类的属性--都必须在构造过程中设置初始值. Swift 提供了两种类型的类构造器来确保全部类实例中存储型属性都能获得初始值,它们各自是指定 ...
- Go part 5 结构体,方法与接收器
结构体 结构体定义 结构体的定义只是一种内存布局的描述(相当于是一个模板),只有当结构体实例化时,才会真正分配内存空间 结构体是一种复合的基本类型,通过关键字 type 定义为 自定义 类型后,使结构 ...
- C语言实现链表中结构体嵌套
1.首先,定义两个结构体,一个用于定义链表,一个用于定义数据 // 定义数据相关的结构体 typedef struct Student{ int stu_id; ]; }Stu; // 定义链表相关的 ...
- APUE学习笔记——4.2结构体 struct stat 及其相关函数介绍
以下不少内容来自man手册 结构体struct stat 结构体struct stat用于保存文件相关的所有信息. struct stat的基本成员如下所示 struc ...
- 转载:[转]如何学好3D游戏引擎编程
[转]如何学好3D游戏引擎编程 Albert 本帖被 gamengines 从 游戏引擎(Game Engine) 此文为转载,但是值得一看. 此篇文章献给那些为了游戏编程不怕困难的热血青年,它的 ...
- 第1部分: 游戏引擎介绍, 渲染和构造3D世界
原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ---------------------------------------------- ...
随机推荐
- Swift-05-SizeOf&&SizeOfValue
在C中定义的运算符,可以作用于类型或者某个实际的变量,并返回其在内存中的尺寸size_t. 在Cocoa中,我们一般用来将数组生成NSData的时候传入数据长度.因为在OC里面,sizeOf这个C运算 ...
- Linux系统产生随机数的3种方法
Linux系统产生随机数的3种方法 方法一:生成8位随机数 [root@localhost ~]# echo "$RANDOM$(date +%N%t)" | md5sum | c ...
- [Machine Learning]k-NN
k-NN最近邻算法 基本思想: 对未知样本X,从训练样本集中获取与其最相近的k个样本,利用这k个样本的类别预测未知样本X的类别. 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大 ...
- UIActivityIndicatorView
1. activityIndicatorViewStyle 设置指示器的样式 UIActivityIndicatorViewStyleWhiteLarge UIActivityIndicator ...
- swift 同步加载图片
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...
- 清除mstsc远程登录记录
这里提供一串清除mstsc远程登录记录的命令 @echo off set TMP1=%cd%echo %TMP1%reg delete "HKEY_CURRENT_USER\Software ...
- C# 字典 Dictionary<Tkey,Tvalue>
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被 ...
- JDK里的设计模式
一.Creational patterns 创建模式 Abstract factory (recognizeable by creational methods returning the facto ...
- TIJ——Chapter One:Introduction to Objects
///:~容我对这个系列美其名曰"读书笔记",其实shi在练习英文哈:-) Introduction to Objects Object-oriented programming( ...
- Swift实战-小QQ(第1章):QQ登录界面
1.新建小QQ项目 2.将所需用到的图片资源(resource)文件夹,添加到项目中.并新建一个登录页面:LoginViewController.swift 3.修改LoginViewControll ...