当前位置: 首页 > news >正文

2311d游戏引擎适配ios

原文
通过遵循arsd:simpledisplay(v11.0.0之前)上的一些旧代码,Apple的文档和Jacob的这一惊人贡献桥,
我已从金属绑定中删除了所有extern(Objective-C)代码,现在,所有Objective-C桥接代码都是使用D的反射生成的.
因此,给定此例代码:

import core.attribute : selector;
extern(Objective-C):
class MTKView
{
    //创建要绘画到当前可绘画对象中的渲染传递描述符.
    @selector("currentRenderPassDescriptor")
    MTLRenderPassDescriptor currentRenderPassDescriptor();
}
class MTKView2 : MTKView
{
    //创建要绘画到当前可绘画对象中的渲染传递描述符.
    @selector("currentRenderPassDescriptor2")
    MTLRenderPassDescriptor currentRenderPassDescriptor2();
}

现在有:

mtkview.d
module mtkview;
import objc.meta : selector;
@ObjectiveC final extern(C++):
class MTKView
{
    //创建要绘画到当前可绘画对象中的渲染传递描述符.
    @selector("currentRenderPassDescriptor")
    MTLRenderPassDescriptor currentRenderPassDescriptor();
}
class MTKView2
{
    mixin ObjcExtends!(MTKView);
    //创建要绘画到当前可绘画对象中的渲染传递描述符.
    @selector("currentRenderPassDescriptor2")
    MTLRenderPassDescriptor currentRenderPassDescriptor2();
}
//metal_gen.d
module metal_gen;
import mtkview;
mixin ObjcLinkModule!(mtkview);

这是如何从单独编译中获得实际优势的示例,分开编译反射接口代码可带来更好编译速度.

mixin ObjcLinkModule用来迭代每个@ObjectiveCUDA,为类和接口中定义的每个方法生成实现.(是的,可在其他文件中实现类方法).
final用来使D避免使用虚表,因为ObjectiveC对象不遵循D约定,因此要取名字空间和指针.这样,甚至可制作出不会出现段错误的如下有效代码:

import mtkview;
(cast(MTKView)(new int)).currentRenderPassDescriptor;

虽然extern(C++)基本上是通过不生成TypeInfo节省一些内存,且可在因段错误需要转换时,避免D动态转换.
尽管接口代码不像以前那样干净,但对用户来说,唯一改变的是,因为所有类都是最终的,因此不会按其父类隐式转换,而需要显式转换.

我想,支持iOSM1是合理的.只是在整个引擎中,在更改绑定后,需要修复大约2行代码,因此,前端用户仍会有个好看代码.

D金属绑定
未来,提供对HipremeEngineiOS支持,并在MacOS构建选择器上,提供官方LDC支持,这样对普通用户,几乎可在所有平台使用该引擎😃

相关文章:

  • 键盘win键无法使用,win+r不生效、win键没反应、Windows键失灵解决方案(亲测可以解决)
  • Linux基础开发工具之调试器gdb
  • scss 实用教程
  • 深入理解ClickHouse跳数索引
  • Redis之主从复制
  • 搭建神经网络(torch.nn的用法)
  • Llama2通过llama.cpp模型量化 WindowsLinux本地部署
  • Spring Boot自动配置原理、实战、手撕自动装配源码
  • 一步一步详细介绍如何使用 OpenCV 制作低成本立体相机
  • css实现div倾斜效果
  • SDWAN(Software Defined Wide Area Network)概述与优势分析
  • 用于图像处理的高斯滤波器 (LoG) 拉普拉斯
  • hdlbits系列verilog解答(100位BCD加法器)-43
  • 解决win11更新后,文件夹打不开的bug
  • KafkaConsumer 消费逻辑
  • pytorch DistributedDataParallel 分布式训练踩坑记录
  • Clickhouse学习笔记(5)—— ClickHouse 副本
  • 新方向!文心一言X具身智能,用LLM大模型驱动智能小车
  • spring boot security 自定义AuthenticationProvider
  • 软考 系统架构设计师系列知识点之边缘计算(5)
  • 15年全免费,内蒙古准格尔旗实现幼儿园到高中0学费
  • 3月中国减持189亿美元美债、持仓规模降至第三,英国升至第二
  • 受贿1.29亿余元,黑龙江省原副省长王一新被判无期
  • 央视起底“字画竞拍”网络传销案:涉案44亿元,受害者众多
  • 吉利汽车一季度净利润大增264%,称整合极氪后实现整体效益超5%
  • 通用汽车回应进口车业务调整传闻:因经济形势变化重组,致力于在中国持续发展