Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
类型'的例外情况;system.stackoverflowexception';是用OpenGL抛出的c#_C#_Opengl - Fatal编程技术网

类型'的例外情况;system.stackoverflowexception';是用OpenGL抛出的c#

类型'的例外情况;system.stackoverflowexception';是用OpenGL抛出的c#,c#,opengl,C#,Opengl,我使用gl.ReadPixels()获取像素颜色,但我有一个问题,即在行“gl.ReadPixels”(x,y,1,1,OpenGL.gl\u RGB,OpenGL.gl\u FLOAT,pixels)处抛出了类型为“system.stackoverflowexception”的异常 你能帮我纠正那个错误吗 您有一个包含3个字节的数组,但您正在尝试读取3个(RGB)浮点值,即12个字节。将数组从byte类型更改为float类型 谢谢,glReadPixels需要的参数是byte[]pixels,

我使用
gl.ReadPixels()
获取像素颜色,但我有一个问题,即在行“gl.ReadPixels”(x,y,1,1,OpenGL.gl\u RGB,OpenGL.gl\u FLOAT,pixels)处抛出了类型为“system.stackoverflowexception”的
异常


你能帮我纠正那个错误吗

您有一个包含3个字节的数组,但您正在尝试读取3个(RGB)浮点值,即12个字节。将数组从byte类型更改为float类型

谢谢,glReadPixels需要的参数是byte[]pixels,我从OpenGL.GL\u FLOAT改为OpenGL.GL\u byte,但当时你不应该让字节数组大小为12并保持GL\u FLOAT。是这样吗?公共颜色getPixelColor(OpenGL,int x,int y){Color Color=new Color(0,0,0);float[]像素=新的float[12];gl.ReadPixels(x,y,1,1,OpenGL.gl_RGB,OpenGL.gl_float,pixels);Color.setColor(像素[0],像素[1],像素[2]);return color;}您说过参数是byte[],那么它应该是:
byte[]像素=新字节[12]。因为它是字节,所以在返回颜色之前,必须将它转换为浮点。是的,那么如何将字节数组像素转换为浮点呢?
public Color getPixelColor(OpenGL gl, int x, int y) 
{
    Color color = new Color(0, 0, 0);
    byte[] pixels = new byte[3];               
    gl.ReadPixels(x, y, 1, 1, OpenGL.GL_RGB, OpenGL.GL_FLOAT, pixels);
    int a = pixels[0], b = pixels[1], c = pixels[2];
    color.setColor(pixels[0], pixels[1], pixels[2]);              
}