You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HLSL中设置数组?GLSL写法无效的技术咨询

HLSL数组初始化的正确实现方式

GLSL中int[8](0, 0, 0, 0, 0, 0, 0, 0)这种数组字面量初始化的写法在HLSL中不被支持,以下是几种可行的替代方案:

  • 声明时直接初始化
    如果是在定义数组的同时完成初始化,直接使用大括号包裹初始值即可:

    int array[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
    
  • 运行时批量赋值
    若数组已提前声明,需要在运行阶段赋值,可通过逐个元素赋值或循环实现:

    // 逐个元素赋值
    int array[8];
    array[0] = 0;
    array[1] = 0;
    array[2] = 0;
    array[3] = 0;
    array[4] = 0;
    array[5] = 0;
    array[6] = 0;
    array[7] = 0;
    
    // 循环赋值(适合元素较多的数组)
    int array[8];
    [unroll] // 可选,提示编译器展开循环优化
    for (int i = 0; i < 8; i++) {
        array[i] = 0;
    }
    
  • HLSL 2020+版本的简化写法
    针对Shader Model 6.6及以上的HLSL版本,可以引入标准库的std::array来使用初始化列表:

    #include <array>
    
    std::array<int, 8> array = { 0, 0, 0, 0, 0, 0, 0, 0 };
    

内容的提问来源于stack exchange,提问作者Logos King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:01:25