c_cpp [失败]一部のキューブしか回らない

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp [失败]一部のキューブしか回らない相关的知识,希望对你有一定的参考价值。

using UnityEngine;

public class ComputeCubes : MonoBehaviour
{
    [SerializeField]
    private ComputeShader _computeShader;

    private ComputeBuffer _buffer;

    /// <summary>
    /// 生成個数
    /// </summary>
    private int _cubeCount = 1000;

    /// <summary>
    /// キューブ参照
    /// </summary>
    private GameObject[] _cubes;

    /// <summary>
    /// 各キュー部の角度を格納配列
    /// </summary>
    private float[] _angles;

    private int _mainKernel = 0;

    void Start()
    {
        _cubes = new GameObject[_cubeCount];
        _angles = new float[_cubeCount];
        for (int i = 0; i < _cubeCount; i++)
        {
            var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
            // 配置範囲
            float len = 20f;
            cube.transform.localPosition =
                new Vector3(Random.Range(-len, len), Random.Range(-len, len), Random.Range(-len, len));
            _cubes[i] = cube;
        }

        _buffer = new ComputeBuffer(_cubeCount, sizeof(float));
        _mainKernel = _computeShader.FindKernel("CSMain");
        _computeShader.SetBuffer(_mainKernel, "Result", _buffer);
        _buffer.SetData(_angles);
    }

    void Update()
    {
        // GPU並列処理実行
        _computeShader.Dispatch(_mainKernel, 8, 1, 1);

        var data = new float[_cubeCount];
        // 更新結果を取得
        _buffer.GetData(data);

        for (int i = 0; i < _cubeCount; i++)
        {
            float result = data[i];
            _angles[i] = result;
            _cubes[i].transform.localEulerAngles = new Vector3(_angles[i], 0, 0);
        }
    }

    private void OnDestroy()
    {
        _buffer.Release();
    }
}
#pragma kernel CSMain

RWStructuredBuffer<float> Result;

[numthreads(8,1,1)]
void CSMain (uint id : SV_DispatchThreadID)
{
    Result[id] += 1;
}


以上是关于c_cpp [失败]一部のキューブしか回らない的主要内容,如果未能解决你的问题,请参考以下文章

javascript ページ内リンク时固定ヘッダーをかぶらないようにする

markdown android studioでよくわからないビルドエラーのとき

swift UITableView中のセクションヘッダーがスクロール时に上で止まらないようにする

ruby 登录する日付が,当日よりも过去の场合はバリデーションが通らない

markdown webmockでスタブしたのに动かない

csharp 标准の数値书式指定文字列とかカスタム书式とか的ToString(字符串)メソッドなどで,数値のフォーマットを指定して文字列で表现することができます。たまにしか使わないから忘れちゃうんです