Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在shadermodel 3.0中将Kinect depthdata short[]设置为纹理格式的int?_C#_Xna_Kinect - Fatal编程技术网

C# 如何在shadermodel 3.0中将Kinect depthdata short[]设置为纹理格式的int?

C# 如何在shadermodel 3.0中将Kinect depthdata short[]设置为纹理格式的int?,c#,xna,kinect,C#,Xna,Kinect,大家好,我们正在与Kinect和C#XNA在Windows7上进行一个项目。 我们遇到了一个意想不到的问题:来自Kinect相机的深度数据为我们提供了一个short[],但我们只能以int32格式或float16或float32或float64格式创建纹理 因此,问题是在CPU上将这个相当大的short[]图像转换成int32或float的速度慢得可笑。在Shadermodel 3.0上没有bitwize操作,所以据我所知,我们不能将float比特破解回int 我们正在考虑进入C++,但这让我们

大家好,我们正在与Kinect和C#XNA在Windows7上进行一个项目。
我们遇到了一个意想不到的问题:来自Kinect相机的深度数据为我们提供了一个
short[]
,但我们只能以
int32
格式或
float16
float32
float64
格式创建纹理

因此,问题是在CPU上将这个相当大的
short[]
图像转换成
int32
float
的速度慢得可笑。在Shadermodel 3.0上没有bitwize操作,所以据我所知,我们不能将
float
比特破解回
int


我们正在考虑进入C++,但这让我们感到疑惑:XBOX360到底是如何与Kinect合作的?我们认为,它应该针对Xbox进行优化。有这么少可用的纹理格式似乎很愚蠢。

你到底想实现什么?Kinect返回的深度数据本身不是图像,而是一组距离。不管怎样,你都必须把它转换成一个图像,即使有一些基于短的纹理格式。在OpenGL中,我们可以选择不同的纹理格式。例子。GLTEXAGE2D(GL_纹理_2D,0,GL_R16,宽度,高度,0,GL_红色,GL_无符号_短,(GLvoid*)纹理_数据);因此,在C++和OpenGL中,我们可以选择使用UNSIGNEDY短作为输入数据,并且转换将为我们完成,快速和优化。在C#XNA中,Texture2D SurfaceFormat所有格式似乎都是浮点格式。。。而且没有像我看到的那样快的自动转换。我觉得这很奇怪,因为我认为它是优化游戏的。“所以在C++和OpenGL中,我们实际上可以选择使用unsiNeddStI短作为输入数据,并且转换将为我们完成,快速和优化。”但是如何?那些短裤不是颜色数据。OpenGL如何知道将这些值转换为什么颜色?因为GLTEXAGE2D函数非常棒,它允许您指定纹理的内部格式,还允许您指定输入数据的确切格式。当它出现在图形卡上之后,您只需要一个执行乘法的着色器