如何以bgra8Unorm像素格式绘制MTLTexture

迪玛·罗斯托皮拉(Dima Rostopira)

当我MTLTexture使用rgba32Float像素格式绘制代码时,我的代码可以工作,然后可以将其CVPixelBuffer取出。

但是FlutterTexture需要bgra8Unorm格式。CVPixelBuffer由于性能开销,我不想进行转换

因此,我尝试MTLTexture使用bgra8Unorm像素格式进行渲染,但是以下片段着色器代码无法编译:

fragment vector_uchar4 fragmentShader2(Vertex interpolated [[stage_in]]) {
    return 0xFFFFFFFF;
}

错误:Invalid return type 'vector_uchar4' for fragment function我尝试用uinttype替换它,但是由于错误而崩溃:

Fatal error: 'try!' expression unexpectedly raised an error:
Error Domain=AGXMetalA11 Code=3 
"output of type uint is not compatible with a MTLPixelFormatBGRA8Unorm color attachement."
UserInfo={NSLocalizedDescription=output of type uint is not compatible with a MTLPixelFormatBGRA8Unorm color attachement.}

如果我使用vector_float4vector_half4返回类型,则我的纹理和缓冲区为空。

我必须将哪种返回类型用于bgra8Unorm像素格式并获取非空图像?金属有可能吗?

迪玛·罗斯托皮拉(Dima Rostopira)

我已经在“金属底纹语言”规范的第30页上找到了答案

在此处输入图片说明

最后,此代码按预期绘制图像:

fragment float4 fragmentShader2(Vertex interpolated [[stage_in]]) {
    // ...
    rgba8unorm<float4> rgba;
    rgba = float4(color.r, color.g, color.b, 1.0);
    return rgba;
}

如果有人可以解释幕后发生的事情,我真的很想不浪费金钱。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

金属似乎将bgra8Unorm解释为RGBA颜色

来自分类Dev

当后缓冲区格式为DXGI_FORMAT_B8G8R8A8_UNORM时,为什么像素着色器返回float4?

来自分类Dev

DX11将像素格式BGRA转换为RGBA

来自分类Dev

MTLTexture 用 r32Float 像素格式转位图

来自分类Dev

将金属帧缓冲区复制到具有不同像素格式的MTLTexture

来自分类Dev

表面格式为B8G8R8A8_UNORM,但vkCmdClearColorImage是否为float?

来自分类Dev

表面格式为B8G8R8A8_UNORM,但vkCmdClearColorImage是否为float?

来自分类Dev

将像素缓冲区从16Bit转换为B8G8R8A8_UNorm

来自分类Dev

在R中,如何以SVG格式绘制并输出到内存缓冲区而不是文件

来自分类Dev

如何以timedelta格式绘制带有日期和时间的时间分布直方图-Python?

来自分类Dev

在R中,如何以SVG格式绘制并输出到内存缓冲区而不是文件

来自分类Dev

如何以整洁的格式从 hmisc 中的描述函数中提取值以绘制输出图形?

来自分类Dev

如何以像素为单位滚动DataGridView

来自分类Dev

如何选择DirectX像素格式?

来自分类Dev

如何以这种格式分享?

来自分类Dev

如何在SDL 2.0中绘制像素?

来自分类Dev

如何在SDL 2.0中绘制像素?

来自分类Dev

如何使用 GPU 绘制 OpenGL 像素

来自分类Dev

如何以8位格式表示图像的傅立叶变换的幅度?

来自分类Dev

如何以Putty或Puttygen可读格式导出(PKCS#8?)私钥?

来自分类Dev

如何以正确的方式将UTF8格式化为Subject Header?

来自分类Dev

iOS 8:如何以编程方式在自由格式ViewController中为UITableview设置高度

来自分类Dev

使用DirectX11像素着色器将颜色从DXGI_FORMAT_B8G8R8A8_UNORM转换为GPU中的NV12

来自分类Dev

将 BGRA 像素转换为灰度

来自分类Dev

R如何以方式绘制结果

来自分类Dev

如何使用ffmpeg仅更改像素格式?

来自分类Dev

如何以编程方式绘制特定的可绘制资源?

来自分类Dev

如何以像素为单位指定侧边栏面板的宽度?

来自分类Dev

如何以像素为单位找到轴的交叉点

Related 相关文章

  1. 1

    金属似乎将bgra8Unorm解释为RGBA颜色

  2. 2

    当后缓冲区格式为DXGI_FORMAT_B8G8R8A8_UNORM时,为什么像素着色器返回float4?

  3. 3

    DX11将像素格式BGRA转换为RGBA

  4. 4

    MTLTexture 用 r32Float 像素格式转位图

  5. 5

    将金属帧缓冲区复制到具有不同像素格式的MTLTexture

  6. 6

    表面格式为B8G8R8A8_UNORM,但vkCmdClearColorImage是否为float?

  7. 7

    表面格式为B8G8R8A8_UNORM,但vkCmdClearColorImage是否为float?

  8. 8

    将像素缓冲区从16Bit转换为B8G8R8A8_UNorm

  9. 9

    在R中,如何以SVG格式绘制并输出到内存缓冲区而不是文件

  10. 10

    如何以timedelta格式绘制带有日期和时间的时间分布直方图-Python?

  11. 11

    在R中,如何以SVG格式绘制并输出到内存缓冲区而不是文件

  12. 12

    如何以整洁的格式从 hmisc 中的描述函数中提取值以绘制输出图形?

  13. 13

    如何以像素为单位滚动DataGridView

  14. 14

    如何选择DirectX像素格式?

  15. 15

    如何以这种格式分享?

  16. 16

    如何在SDL 2.0中绘制像素?

  17. 17

    如何在SDL 2.0中绘制像素?

  18. 18

    如何使用 GPU 绘制 OpenGL 像素

  19. 19

    如何以8位格式表示图像的傅立叶变换的幅度?

  20. 20

    如何以Putty或Puttygen可读格式导出(PKCS#8?)私钥?

  21. 21

    如何以正确的方式将UTF8格式化为Subject Header?

  22. 22

    iOS 8:如何以编程方式在自由格式ViewController中为UITableview设置高度

  23. 23

    使用DirectX11像素着色器将颜色从DXGI_FORMAT_B8G8R8A8_UNORM转换为GPU中的NV12

  24. 24

    将 BGRA 像素转换为灰度

  25. 25

    R如何以方式绘制结果

  26. 26

    如何使用ffmpeg仅更改像素格式?

  27. 27

    如何以编程方式绘制特定的可绘制资源?

  28. 28

    如何以像素为单位指定侧边栏面板的宽度?

  29. 29

    如何以像素为单位找到轴的交叉点

热门标签

归档