【发布时间】:2012-04-17 01:21:31
【问题描述】:
我正在尝试使用 opengl 在屏幕上显示一些点。 这是ondraw的代码:
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glColor4f(0, 255, 0, 0);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, buffer);
gl.glDrawArrays(GL10.GL_POINTS, 0, points.length);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
谁能告诉我我做错了什么???
编辑:生成缓冲区和点的代码
points = new float[12288];
int pos = 0;
for (float y = 0; y < 64; y++) {
for (float x = 0; x < 64; x++) {
points[pos++] = x/100;
points[pos++] = y/100;
points[pos++] = 0;
}
}
ByteBuffer vertexByteBuffer = ByteBuffer.allocateDirect(points.length * 4);
vertexByteBuffer.order(ByteOrder.nativeOrder());
// allocates the memory from the byte buffer
buffer = vertexByteBuffer.asFloatBuffer();
// fill the vertexBuffer with the vertices
buffer.put(points);
// set the cursor position to the beginning of the buffer
buffer.position(0);
以及 logcat 的错误:
04-17 06:38:11.296:A/libc(24276):致命信号 11 (SIGSEGV) 位于 0x41719000(代码=2)
这个错误发生在 gl.glDrawArrays
【问题讨论】:
-
能否显示错误信息或LogCat?
-
还需要更多代码。显示缓冲区、点的来源。
-
致命信号还是异常?尝试在抛出异常时启用中断,看看发生了什么。