看事之乱斗水浒-游戏概念
看事之乱斗水浒-游戏概念前言许久不更新,最近对独立游戏很有兴趣,所以记录一下目前的想法。如标题所见,正在构思的游戏是以水浒传为背景,结合看事中的十绝斗法。看事是斗鱼主播寅子直播间中水友的一款橙光游戏,本人作为老大橙光游戏的忠实观众,也十分喜欢这款游戏。那为什么要以看事为背景呢,最主要的原因就是——对于游戏开发经验为0的我,并不知道要做什么。所以作为我试水游戏开发的第一款游戏,我就选择了比熟悉并且比较喜欢的看事最为背景。而加入水浒传也是在老大直播间多次听到的牢骚,为什么没有人做关于水浒传的游戏。根据现有的浅显的了解,比较出名的以水浒为背景的游戏都是上个世纪的产物,也不是我想要改变现状想要做出一款优秀的水浒背景游戏,单纯是老大的一句感叹而恰好我也记在心里了。
再来说说目前所做的准备,可以说几乎为零。对于游戏的开发可以说得上一无所知,还包括美术、音乐等,就算是水浒传都没有完整的看一遍。这样看来,想要开发出这样一款游戏说一句痴人说梦也不为过。但是呢,还是想尝试一下,一切从零开始,慢慢学习。
游戏玩法目前构思的游戏类型是回合制的卡牌rpg,游戏的剧情还没有构思,但是大体的玩法就是以主角董六爻的六 ...
公专day1
公专day1
看到关键字可秒
宗旨——人民
政治——党、国家、根本、本质、最高、核心、首要
经济——基础
法律基础知识
HashTable
HashTable最近开始刷leetcode,第一题两数之和有两种解法,一个是暴力循环另一个就是哈希表实现。趁着刷leetcode就顺便将c++和数据结构学习一下,本文从c语言入手探究哈希表的底层实现。
HashTable是什么?首先看一下维基百科对于哈希表的描述:
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将所需查询的数据映射到表中一个位置来让人访问,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
在下方表述中会使用hash(哈希)来表达
在刷题数据结构的题目时简单的题目往往会用到链表,但是我们查找链表中的某一项时,需要将所有项进行对比。而哈希表是通过key-value直接访问成员的,表中的每一个成员都有一个对应的key值。这样就可以省略每一项之间的比较,通过key值直接查找到对应的value,从而省去大量的时间。无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1),而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做 ...
leetcode每日一题(1)
leetcode每日一题(1)——同积元组给你一个由 不同 正整数组成的数组 nums ,请你返回满足 a * b = c * d 的元组 (a, b, c, d) 的数量。其中 a、b、c 和 d 都是 nums 中的元素,且 a != b != c != d 。
示例 1:
12345输入:nums = [2,3,4,6]输出:8解释:存在 8 个满足题意的元组:(2,6,3,4) , (2,6,4,3) , (6,2,3,4) , (6,2,4,3)(3,4,2,6) , (4,3,2,6) , (3,4,6,2) , (4,3,6,2)
示例 2:
1234567输入:nums = [1,2,4,5,10]输出:16解释:存在 16 个满足题意的元组:(1,10,2,5) , (1,10,5,2) , (10,1,2,5) , (10,1,5,2)(2,5,1,10) , (2,5,10,1) , (5,2,1,10) , (5,2,10,1)(2,10,4,5) , (2,10,5,4) , (10,2,4,5) , (10,2,5,4)(4,5,2,10) , (4,5,1 ...
Vulkan Queries查询
Vulkan Queries查询本文内容翻译自Vulkan官网相关文章
Vulkan Documentation Project Demohttps://registry.khronos.org/vulkan/site/spec/latest/chapters/queries.html#queries-occlusion
查询提供了一种机制来返回有关处理一系列 Vulkan 命令的信息。查询操作是异步的,因此不会立即返回其结果。相反,其结果和可用性状态存储在查询池中。这些查询的状态可以在主机上读回,也可以复制到设备上的缓冲区对象。
支持的查询类型包括遮挡查询、管道统计信息查询、结果状态查询、视频编码反馈查询和时间戳查询。如果关联的扩展可用,则支持性能查询。如果关联的扩展可用,则支持转换反馈查询。如果关联的扩展可用,则支持英特尔性能查询。如果关联的扩展可用,则支持网格着色器查询。
如果支持相应的扩展,则可以使用与光线追踪关联的具有特定用途的几个其他查询,如 VkQueryType 中所述。
Query Pools 查询池查询使用查询池对象进行管理。每个查询池都是特定类型的特定数量的查 ...
Vulkan学习笔记(1)
Vulkan学习笔记(1)本文内容主要是《Vulkan学习指南》的学习笔记,该书一共十章内容,目前计划每一章对应一篇学习笔记。笔记内容还包括网上其他的教程和chatGPT回答。因为之前并没有系统学习过计算机图形学,对这一部分知之甚少,主要是因为工作赶鸭子上架,文章也只是个人复习使用,谨慎转载。
什么是Vulkan?Vulkan是一款革命性的高性能3D图形和计算API,可用于现代GPU 管线架构,能满足社区的最新需求。该API提供了一套全新的方法来克 服传统API的复杂性和缺陷。Vulkan是一个显式API,保证用户在渲染 时保持稳定平滑的帧速率,不会造成延迟或者故障。[1] Vulkan学习指南 (【新加坡】帕敏德·辛格(Parminder Singh)参考资料
参考资料[1] Vulkan学习指南 (【新加坡】帕敏德·辛格(Parminder Singh)
DMA scatterlist
DMA scatterlistDMA直接以物理地址形式访问memory,软件进行一系列操作之后,只要把存储空间交给DMA控制器,最终由DMA控制器将数据搬移给某个外设是,由于DMA控制器只能访问物理地址,只能以不连续的物理内存块为单位递交。
所以需要用一个数据结构来描述一个个不连续的物理内存,这个数据结构就是scatterlist。scatterlist本身并不是一种链表的结构,只是用来描述一个单独的内存块。多个scatterlist组合在一起形成一个表,可以是scatterlist类型的数组,也可以是内核抽象出来的sg_table
scatterlist就是DMA物理地址映射虚拟地址的数据结构,多个scatterlist
API描述struct scatterlist用于描述在一个物理地址上连续的内存块(以page为单位)
123456789101112/* page_link,指示该内存块所在的页面。bit0和bit1有特殊用途,因此要求page最低4字节对齐。 offset,指示该内存块在页面中的偏移(起始位置)。 length,该内存块的长度。 dma_ad ...
Linux亮度调节分析-从顶层到底层
亮度调节分析在Ubuntu下,我们是看不到亮度调节的按钮的(可能大部分用户调节屏幕亮度都是通过显示器按钮直接调节),但是新的银河麒麟和openkylin中,在display设置中出现了亮度控制的按钮可以拖动进行亮度的调节。
其实在ubuntu中,我们还可以通过ddcutil工具来进行屏幕亮度的控制
1sudo ddcutil setvcp 10 80
通过上述命令就可以将屏幕的亮度调整至80%,如果失败了,可能需要通过apt install来安装ddcutil工具。当然ddcutil不只是控制亮度这一个功能,对于显示器几乎所有的设置都可以使用ddcutil,具体参数使用ddcutil vcpinfo查看。
ddc协议
DDC(Display Data Channel):
DDC是一种用于显示器与计算机之间进行通信的协议。它允许计算机通过连接的显示器获取关于显示器的信息,如分辨率、亮度、对比度、色彩设置等。
DDC是I2C总线协议的一种应用,通过I2C总线进行数据传输。
最常用的版本是DDC/CI,它允许计算机通过I2C总线向显示器发送控制指令,实现调节显示器参数的功能,如调节亮度、对 ...
PCIe-DMA
PCIe-DMA在pcie中,RC或EP可以将大块数据的传输交给DMA控制器,使cpu能够空闲出来执行其他的任务。DMA可以分别配置1-8个读写的通道,能同时执行读写的事务。
DMA支持全双工,并且可以和非DMA的数据并行处理。传输完成或出现错误,DMA可以选择中断本地执行DMA操作的CPU或者向目标CPU发送中断MWr(IMWr)。可以使用本地DBI或通过PCIe进行配置。
在链表模式下,DMA从本地内存中构建的DMA元素列表中获取每个传输块,和传输控制信息
DMA支持“原生控制器操作(无需AXI桥)”,也可以与AXI桥一起使用DMA,在这种情况下,DMA位于本机PCIe控制器和AXI桥模块之间。
DMA体系结构DMA读写DMA写入和读取通道是独立运行的,以最大限度提高PCIe链路上DMA读写数据的性能。配置有多个读取通道的DMA时,会是哦也能够加权轮询(WRR)仲裁方案来选择要服务的下一个通道,有多个通道同样适用。
DMA读写传输DMA将多个大小小于或等于最大读取请求大小Max_Read_Request_Size和最大负载大小Max_Payload_Size的MRd请求