[GEiv]第一章:静态绘制(一) 图元与基本图形

2023-12-13 11:38

本文主要是介绍[GEiv]第一章:静态绘制(一) 图元与基本图形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章:静态绘制(一)

图元与基本图形绘制

        从这篇文章开始,进行引擎功能的详细讲解,第一章主要讲解静态绘制的基本API,这是制作动画的基础部分。

[图元][class: geivcore.enginedata.obj.Obj]]

        我承认Obj这个名字不是很好,这是历史原因造成的。Obj是图元类,任何展示在屏幕上的图像都由Obj实现,任何对图像的变换操作由ObjAPI来完成,一个图元中容纳若干个图形类(可以是0个),在一个图元中图形被编号为由0开始的整数索引,但在实际操作中,使用索引的情况并不多见。

[引擎句柄][interface: geivcore.UESI]

        Obj的创建由引擎句柄(UESI)完成,UESI是引擎的上层包装接口,它向上提供引擎的全部系统调用,在游戏系统开始时,最好将UESI作为构造器参数传入或干脆将UESI做静态化单例包装,以供上层框架随时调用。总之,UESI就是引擎的全部,这点需要注意。

[例子]画一个方形:

public static void main(String[] args) {UESI UES = new R();//初始化引擎环境Obj rect = UES.creatObj(UESI.BGIndex);//创建一个图元,在背景层次。rect.addGLRect("FFFFFF",0,0,100f,100f);//在图元上画一个正方形,位置(0,0),大小:100X100。颜色FFFFFFrect.show();//显示rect.setDx(100);//将图元x坐标移动到100位置rect.setDy(100); //将图元y坐标移动到100位置}

        

        有必要进行详细的代码解释。

        1)UESI UES = new R();//初始化引擎环境

        UESI前者说过,是引擎包装接口,而R类是这个接口的一个具体实现,我们使用接口屏蔽R的具体实现细节。典型的游戏开发中只会使用到一个R,因此,只需要保留这个UESI引用即可,不要每次都实例化。

        2) Obj rect =UES.creatObj(UESI.BGIndex);

        Obj为图元,图元的创建能且仅能使用UES的createObj方法,不要使用new Obj的形式。构造参数是这个图元所在的绘制层次,这个引擎由下至上保留了7个绘制层次,当多个图元出现在相同位置时,上层图元一定会覆盖下层图元,而同层图元覆盖规则依赖创建的顺序。

        

       这里,BGIndex是最底层,一般放置游戏的背景元素。

        3)rect.addGLRect("FFFFFF",0,0,100f,100f);

        rect是一个图元引用,图元使用一系列addGL*方法来创建各种图形,它们包括:


        一共有十六中方法,当然包括了一些重载情况。

        抛开重载不提,依次简单介绍一下:

        addGLFont:向图元绘制一个静态字体,需要指定其颜色、位置、字体、字号、字形、内容、左下缩进。支持中文,当然也可以使用setFontString方法进行修改。(会重新生成文字纹理,所以不要频繁调用,字体调用会使用单独章节讲解)

        addGLImage:创建一个矩形区域,填充指定的图像纹理,需要指定绘制位置和图像文件,图像文件可以是JPG\PNG\BMP等外部文件。在单独由IO读取文件流后,生成的纹理会保存在内存中,不会重复读取IO。

        addGLLine:绘制一条线,需要给定颜色、两点坐标,可以指定绘制宽度。

        addGLNop:什么也不绘制。Nop就是Nop。

        addGLOval:绘制一个椭圆,指定位置与长短轴,由于是使用极坐标进行的多边形模拟,可以指定使用的顶点数来提高图像质量。

        addGLPoint:绘制顶点,指定位置与颜色。

        addGLRect:绘制矩形,指定颜色与长宽。

        addGLTrigon:绘制三角形,指定颜色与三组坐标。

        addGLWorldSet:绘制字库,与静态字体不同,字库中每个字单独产生纹理,例如产生0~9 十个数字的纹理,就可以显示所有数字(会在字体章节详细讲解)对于易变数据的显示,推荐此种方式。

        4)rect.show();

        显示图元,你可以调用hide隐藏一个图元,或调用destory方法永久销毁。

        5)setDx,Dy

        设置图元的位置,整个图元会作为一个整体一起移动,(不只是位置,很多图元变换API会影响到图元中的全部图形,这点很有用),顺带一提,在不指定配置文件的情况下,默认长宽坐标为800X600,以左上为0坐标点,左到右为X方向,上到下为Y方向。

[另一个例子,多图形图元]

        在上例中稍加改动:

        Obj rect =UES.creatObj(UESI.BGIndex);rect.addGLRect("FFFFFF",0,0,300f,300f);rect.addGLLine("00FF00",0,0,300f,300f);rect.addGLOval("FFFF00",0,0,300f,300f);rect.show();rect.setDx(100);rect.setDy(100);

        

        在rect图元中,创建了三个图形,分别为矩形、线、圆形。

        它们分别被名为DivIndex的图元索引标记为0、1、2。

 

        在进行图元变换过程中(包括位置、角度、通道),它们默认作为一个整体一同变换。当然,你也可以使用图元索引指定图元中要变换的某个图形。请看下例

[填充例子]

        我们使用rect.setGLFill(true);方法将图元设置为填充状态。在show前加入这句后执行结果如下:

        

        可以看到,作为底层的方形被填充了,但是圆形却没有填充。

        此时若我想填充圆形而非方形该如何呢?

        使用图元索引:rect.setGLFill(2,true);,其中2是圆形的图元索引,此时执行结果如下:

        

        在图元类中,大部分set方法都有针对图元索引的重载,以提供灵活的操作方式。但图形过多时不推荐放到同一个图元中,图元单图形的方式是被推荐的。

[总结]

        通过这一章,应该可以进行基本图形的绘制了。

这篇关于[GEiv]第一章:静态绘制(一) 图元与基本图形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488324

相关文章

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁