您可以从iOS C插件“当场”写入Unity纹理吗?

胖子

假设您有一个适用于iOS的低级Unity插件,

所以在C#中

using System.Runtime.InteropServices;
using AOT;

public class Teste: MonoBehaviour {

    [DllImport("__Internal")] private static extern
       void set_texture_from_unity(System.IntPtr texture, int w, int h);

有一个纹理,.Apply()然后将指针发送到本地iOS插件:

public void ClickPassTexture() {

    tex = new Texture2D(256, 256, TextureFormat.ARGB32, false);
    tex.filterMode = FilterMode.Point;

    tex.Apply(); // ACTUALLY UPLOAD TO GPU

    someMaterial.mainTexture = tex;

    set_texture_from_unity(
       tex.GetNativeTexturePtr(), tex.width, tex.height);
}

在此处输入图片说明

现在的C代码。

用几条彩色线制作一个纹理,并将其写入Unity纹理。

#include <OpenGLES/ES2/gl.h>
...
void set_texture_from_unity(void *g_TextureHandle,  int w, int h)) {
    
    // make a texture with a few gray rows
    unsigned char* data = malloc( g_TextureWidth * 4 * g_TextureHeight );
    for (int i = 0; i < 1000; ++i) { data[i] = 100; }

    // now, write that to the texture pointer given to us from Unity
    GLuint gltex = (GLuint)(size_t)(g_TextureHandle);
    glBindTexture(GL_TEXTURE_2D, gltex);
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,
      g_TextureWidth, g_TextureHeight, GL_RGBA, GL_UNSIGNED_BYTE, data);

    free(data);

因此,在C代码中,我们似乎已经成功地修改了texture tex

然而。

它不会出现在屏幕上。

在此处输入图片说明 该图显示了完全无法实现任何目标。

精美的Unity doco docs.unity3d.com/Manual/NativePluginInterface.html

给出一个示例,其中Unity渲染链中的回调调用C纹理更改

然而。

我们是否可以简单地使Unity采用新纹理“ now”?

我们什么时候想?

我认为这可能简单地起作用:

    set_texture_from_unity( tex.GetNativeTexturePtr(),
          tex.width, tex.height);
    // the plugin has changed the texture...
    // perhaps an Apply will change it on screen?!
    tex.Apply();

但不是!(如果您在之前等待几帧,则没有区别.Apply。)

您可能会认为.Apply会再次将纹理发送到GPU,但似乎不起作用。

简而言之,在C插件运行之后,如何处理所呈现的代码,以使其显示“ there and then”新纹理?

当您知道一个C插件已经修改了Texture时,在iOS上,如何获取Unity以显示更改?

胖子

“新” Unity中的解决方案

来自Unity日本的(传奇人物)高桥敬次郎(Keijiro Takahashi)可能发布了Unity曾经发布过的最重要的一件事情:

https://github.com/keijiro/TextureUpdateExample

从插件更新new)框架样式纹理实际示例

和IOS一起工作

同样,可以说的是,这几乎是Unity发行的最有价值的东西!


关于所问的问题,我确实从未找到解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您可以在iOS应用中将蓝牙LE设备配对吗

来自分类Dev

iOS:您可以录制而不显示视频吗?

来自分类Dev

您可以在iOS上预载admob DFPBannerView吗

来自分类Dev

您可以在iOS的PhoneGap应用中显示搜索键盘吗?

来自分类Dev

您可以为iOS中默认的“共享”屏幕注册应用程序吗?

来自分类Dev

您可以使用私有API来挂接iOS中的系统函数调用吗?

来自分类Dev

您可以将iOS图标和启动图像放在项目根目录的不同目录中吗?

来自分类Dev

iOS:您可以在不显示视频的情况下进行录制吗?

来自分类Dev

您可以自动在可执行文件中嵌入iOS框架吗?

来自分类Dev

iOS Storyboard:您可以根据屏幕尺寸设置按钮宽度吗?

来自分类Dev

您可以安装UEFI吗?

来自分类Dev

您可以连锁物业吗?

来自分类Dev

您可以在iOS7或iOS8中以编程方式更改Iphone的隐私设置吗

来自分类Dev

您可以从lua修改C结构吗?

来自分类Dev

您可以在iOS 8(带有Swift)中以编程方式切换“请勿打扰”模式吗?

来自分类Dev

您可以在Android和iOS上以编程方式发送包含正文和附件的电子邮件吗?

来自分类Dev

您可以使用具有相同 Firestore 数据库的两个 iOS 应用程序吗?

来自分类Dev

您可以从其他插件导入依赖吗?

来自分类Dev

您可以使用HTML读取/写入Excel文档吗?

来自分类Dev

在Linux上,您可以写入HFS +扩展属性吗?

来自分类Dev

我可以从Unity iOS插件调用C#并获取返回类型吗?

来自分类Dev

您可以在TypeScript中扩展HTMLDivElement吗?

来自分类Dev

您可以共享Docker容器吗?

来自分类Dev

您可以专门使用语句吗?

来自分类Dev

您可以在getElementById中使用通配符吗?

来自分类Dev

您可以遍历雄辩对象的属性吗?

来自分类Dev

您可以迭代导入python模块吗?

来自分类Dev

您可以在python中乘以单词吗?

来自分类Dev

您可以在Julia中保存会话吗

Related 相关文章

  1. 1

    您可以在iOS应用中将蓝牙LE设备配对吗

  2. 2

    iOS:您可以录制而不显示视频吗?

  3. 3

    您可以在iOS上预载admob DFPBannerView吗

  4. 4

    您可以在iOS的PhoneGap应用中显示搜索键盘吗?

  5. 5

    您可以为iOS中默认的“共享”屏幕注册应用程序吗?

  6. 6

    您可以使用私有API来挂接iOS中的系统函数调用吗?

  7. 7

    您可以将iOS图标和启动图像放在项目根目录的不同目录中吗?

  8. 8

    iOS:您可以在不显示视频的情况下进行录制吗?

  9. 9

    您可以自动在可执行文件中嵌入iOS框架吗?

  10. 10

    iOS Storyboard:您可以根据屏幕尺寸设置按钮宽度吗?

  11. 11

    您可以安装UEFI吗?

  12. 12

    您可以连锁物业吗?

  13. 13

    您可以在iOS7或iOS8中以编程方式更改Iphone的隐私设置吗

  14. 14

    您可以从lua修改C结构吗?

  15. 15

    您可以在iOS 8(带有Swift)中以编程方式切换“请勿打扰”模式吗?

  16. 16

    您可以在Android和iOS上以编程方式发送包含正文和附件的电子邮件吗?

  17. 17

    您可以使用具有相同 Firestore 数据库的两个 iOS 应用程序吗?

  18. 18

    您可以从其他插件导入依赖吗?

  19. 19

    您可以使用HTML读取/写入Excel文档吗?

  20. 20

    在Linux上,您可以写入HFS +扩展属性吗?

  21. 21

    我可以从Unity iOS插件调用C#并获取返回类型吗?

  22. 22

    您可以在TypeScript中扩展HTMLDivElement吗?

  23. 23

    您可以共享Docker容器吗?

  24. 24

    您可以专门使用语句吗?

  25. 25

    您可以在getElementById中使用通配符吗?

  26. 26

    您可以遍历雄辩对象的属性吗?

  27. 27

    您可以迭代导入python模块吗?

  28. 28

    您可以在python中乘以单词吗?

  29. 29

    您可以在Julia中保存会话吗

热门标签

归档