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(字符串)メソッドなどで,数値のフォーマットを指定して文字列で表现することができます。たまにしか使わないから忘れちゃうんです