Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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
Android OpenGL致命信号11(SIGSEGV),代码2_Android_Opengl Es - Fatal编程技术网

Android OpenGL致命信号11(SIGSEGV),代码2

Android OpenGL致命信号11(SIGSEGV),代码2,android,opengl-es,Android,Opengl Es,我犯了这个错误 Fatal signal 11 (SIGSEGV), code 2, fault addr 0xa4b7b000 in tid 10818 (GLThread 54114) 当我的应用程序启动时。我正在测试渲染很多点。它以10000分的成绩崩溃,3000分的成绩很好 public class PointRenderer implements GLSurfaceView.Renderer { private int size = 10000; private Fl

我犯了这个错误

Fatal signal 11 (SIGSEGV), code 2, fault addr 0xa4b7b000 in tid 10818 (GLThread 54114)
当我的应用程序启动时。我正在测试渲染很多点。它以10000分的成绩崩溃,3000分的成绩很好

public class PointRenderer implements GLSurfaceView.Renderer {
    private int size = 10000;
    private FloatBuffer floatBuffer;

    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        floatBuffer = ByteBuffer.allocateDirect(4*2*size).asFloatBuffer();

        Random r = new Random();
        for (int i = 0; i < 2*size; i++) {
            floatBuffer.put(r.nextFloat()*100);
        }
    }

    public void onSurfaceChanged(GL10 gl, int w, int h) {
        gl.glViewport(0, 0, w, h);
    }

    public void onDrawFrame(GL10 gl) {
        gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        gl.glPushMatrix();
            gl.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
            gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
            gl.glVertexPointer(2, GL10.GL_FLOAT, 0, floatBuffer);
            gl.glDrawArrays(GL10.GL_POINTS, 0, size);
            gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glPopMatrix();
    }
}
公共类PointRenderer实现GLSurfaceView.Renderer{
私有整数大小=10000;
私有浮动缓冲区;
已创建曲面上的公共void(GL10 gl、EGLConfig配置){
floatBuffer=ByteBuffer.allocateDirect(4*2*size).asFloatBuffer();
随机r=新随机();
对于(int i=0;i<2*大小;i++){
floatBuffer.put(r.nextFloat()*100);
}
}
表面上的公共空隙已更改(GL10 gl、int w、int h){
gl.glViewport(0,0,w,h);
}
公共框架(GL10 gl){
gl.glClearColor(0.0f、0.0f、0.0f、1.0f);
gl.glClear(GL10.gl_颜色_缓冲_位| GL10.gl_深度_缓冲_位);
gl.glPushMatrix();
gl.glColor4f(1.0f,0.0f,0.0f,1.0f);
gl.glEnableClientState(GL10.gl_顶点数组);
gl.glVertexPointer(2,GL10.gl_FLOAT,0,floatBuffer);
gl.gldrawArray(GL10.gl_点,0,大小);
gl.glDisableClientState(GL10.gl_顶点数组);
gl.glPopMatrix();
}
}

在缓冲区中填充数据后,您不需要倒带缓冲区吗?但是,这在所有大小的情况下都是一个问题,所以我认为这要么发生在代码中的其他地方,要么出于某种原因不需要它。事实上,我是这样做的。奇怪的是,它没有倒带就可以使用3000。