雪千渔Blog

  • 首页
  • 写写代码
    • dotNet
    • C++
    • Lua
    • Visual Basic
    • Java
    • Android
    • Web
  • DCC
    • Maya
    • Maya-Plug
    • AfterEffect
    • AfterEffect-Plug
    • PhotoShop-Plug
  • 游戏制作
    • Unity3D
    • UnrealEngine
    • 经验杂谈
    • 游戏设计
    • 自研引擎
    • 效果实现
  • 其他
    • 乱七八糟
    • 软件工具
    • 留言板
    • 自制素材
    • 关于我
C#
C++

C++之偏特化继承实现类型的全退化

在标准库中有个模板函数:std::decay可以退化类型,但退化的并不完全,如const int**[]或者const int* const类型都无法做到完全退化。这里使用模板类型的递归实现: template<typename T> struct fulldecay { using type = T; }; template<typename T> struct fulldecay<const T> : fulldecay<T> { }; template<t…

2021年6月12日 0条评论 1168点热度 2人点赞 JomiXedYu 阅读全文
C++

C++变长模板递归实现多字符串Concat

Concat使用变长的参数模板来接受不同的字符串(string, const char*),为了保证string不会多次分配空间,要先求出所有字符长度之和,分配空间后在依次添加。 变长求和函数: static int _Sum() { return 0; } template<typename T, typename... TArgs> static int _Sum(T t, TArgs... args) { return t + _Sum(args...); } 调用_Sum时,第一个参数会适配T,…

2021年6月11日 0条评论 869点热度 3人点赞 JomiXedYu 阅读全文
C++

C++使用类模板中的类模板与类

此文章主要涉及C++中template与typename关键字的使用,正常情况下template用来定义模板,typename后面定义类型名字,除此之外还有些其他用处。 typename关键字告诉编译把一个特殊的名字解释成一个类型,在下列情况下必须对一个name使用typename关键字: 一个唯一的name(可以作为类型理解),嵌套在另一个类型中; 依赖于一个模板参数,就是说模板参数在某种程度上包含这个name,当模板参数是编译器在指认一个类型时便会产生误解, 如: Base<int>::name a…

2021年5月19日 0条评论 815点热度 0人点赞 JomiXedYu 阅读全文
C++

C++字符串编码与编译器实现

在本篇文章中,Unicode指的是字符集而非UTF-16。 在Windows系统中,UTF8编码会被当作为普通的ASCII编码文件,ASCII是无法储存多字节字符的,所以使用UTF-8并且代码中存在多字节字符时会提示“该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”,遇到这种情况就是无法正确识别UTF-8文件,所以必须添加一个BOM头,即UTF-8 BOM编码格式,才可以正确识别为UTF-8编码。 在MSVC编译器中,可以使用UTF-8 BOM、其他Unico…

2021年5月14日 0条评论 953点热度 4人点赞 JomiXedYu 阅读全文
C++

C#与C/C++动态链接库交互踩坑总结

C与C#的交互 在C#执行C编写的DLL时可能会出现很多问题,而绝大部分问题都出自数据封装传送上,接下来总结了本次交互实验。 环境使用MSVC2019,使用__declspec(dllexport)作为DLL导出关键字,使用__stdcall作为调用协议。 为了更方便使用,声明两个宏:(WINAPI就是__stdcall,来自于windows.h) #define DLLEXPORT __declspec(dllexport) #define CALLAPI WINAPI C#中使用char*和sbyte*等指针使…

2021年1月1日 0条评论 1497点热度 2人点赞 JomiXedYu 阅读全文
C++

C++中的事件分发器与委托

在程序中使用批量事件通知是很常用的场景,该事件分发器可以绑定多个静态与非静态函数,内部使用标准库的list和function实现,可变模板参数可以拓展到任意长度。 模仿C#中的委托,分为Events、Delegate、Action和Function。以下是继承的结构。 Events (添加移除静态与实例事件) Delegate (执行事件、按实例移除或全部移除) Action (Delegate特化版本) Function (继承Delegate,实现带返回值列表的执行事件) Function<bool>…

2020年9月20日 0条评论 2239点热度 6人点赞 JomiXedYu 阅读全文
dotNet

C#动态生成IL实现匿名类和接口

通过这种方式可以直接对接口实例化了(伪),动态的通过委托来实现接口,匿名类型是在运行时动态构建的。 实现思路: 使用AssemblyBuilder、TypeBuilder构建类型,并用FieldBuilder构建一个字典字段<String, Delegate>,用来保存函数名和匿名函数,MethodBuilder构建方法并使用IL流填充,调用保存的匿名函数表中的函数。 构建动态类型的方法要求传入一个<String, Delegate>函数字典,可以使用字典的初始化器来初始化匿名函数来达到实现…

2020年7月27日 0条评论 2164点热度 9人点赞 JomiXedYu 阅读全文
dotNet

C#之结构体与二进制数据的转换

在写关于二进制文件操作程序的时候,经常要去解析文件头,在C++中我通常是使用Stream把文件读取进来后直接将二进制数据拷贝到一个文件头结构体的内存中(memcpy,此处要注意内存对齐的问题),但在C#中没有这个函数,就自己实现了个。整体来说比较麻烦,我也没想到什么其他的好办法,如果有请给我留言。 public unsafe class Unmanaged { public static T CreateStructByBytes<T>(byte[] bytes) where T : unmanaged…

2020年6月28日 0条评论 1870点热度 0人点赞 JomiXedYu 阅读全文
dotNet

C#之拓展方法的本质

扩展方法可以使对象增加额外的“看似是成员”的方法。 普通的实例类型定义: public class InstanceClass { public int a = 3; public void instanceMethod() { this.a = 122; } } 扩展方法的定义: public static class InstanceClassExt { public static void Ext(this InstanceClass _this) { _this.a = 5; } } 分别对成员实例方法和扩…

2020年5月20日 0条评论 1416点热度 0人点赞 JomiXedYu 阅读全文
dotNet

HSV与RGB互转公式与Color封装

无论是System.Draw.Color还是UnityEngine.Color对颜色操作的功能还是太少了,我们在用ps等调色面板使用的都是0-255范围的颜色值,但在图形层却使用的是0-1的浮点数,所以自己封了个支持多种Color操作的类型。 大写的RGB代表着0~255的整数。 小写rgb的范围是0~1的浮点数。 浮点转换整形使用四舍六入五求偶。 RGB转HSV公式: R' = R/255 G' = G/255 B' = B/255 Cmax = max(R', G', B') Cmin = min(R', G'…

2020年4月19日 0条评论 2036点热度 1人点赞 JomiXedYu 阅读全文
12

JomiXedYu

IndieGame Developer & Netease Games TechArt

最新 热点 随机
最新 热点 随机
UE材质Custom节点与HLSL的HACK操作 UE5出现D3D12崩溃报错解决方案 游戏引擎脚本绑定的三种写法与利弊 一种解决不支持中文与空格文件名的编码 Vulkan坐标系通用方案以及反转viewport
修改UnityPlayer.dll的名字ugui多层Sprite的混合合并UE编辑器开发之UToolMenus扩展位置UE编辑器开发之蓝图篇UE编辑器中的C++与Python插件解析
UnityEditor开发之修改脚本Gizmos存放路径 C#与C/C++动态链接库交互踩坑总结 VSTO之Ribbon显示内置图标 Unity安卓编译sdk tools version 0.0.0解决方案 VB6用注册表检测.Net Framework版本是否存在
分类
  • AfterEffect / 6篇
  • AfterEffect-Plug / 1篇
  • Android / 1篇
  • C++ / 14篇
  • dotNet / 12篇
  • Lua / 4篇
  • Maya / 2篇
  • Maya-Plug / 2篇
  • Office-VSTO&VBA / 2篇
  • Unity3D / 14篇
  • UnrealEngine / 7篇
  • Visual Basic / 8篇
  • Web / 2篇
  • 乱七八糟 / 2篇
  • 效果实现 / 2篇
  • 经验杂谈 / 3篇
  • 自制素材 / 3篇
  • 自研引擎 / 2篇
  • 计算机图形学 / 1篇
  • 软件工具 / 4篇
友情链接
  • DorinXL
  • 小博博客
  • 秋橘斋

COPYRIGHT © 2014-2023 雪千渔Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

辽ICP备20006894号-1