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。