WEB开发网
开发学院手机开发Android 开发 Android OpenGL学习 三角形的绘制. 阅读

Android OpenGL学习 三角形的绘制.

 2010-07-15 21:05:00 来源:WEB开发网   
核心提示:private short[] _indicesArray = {0, 1, 2};private int _nrOfVertices = 3;@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {gl.glEnableClientState

private short[] _indicesArray = {0, 1, 2};

private int _nrOfVertices = 3;

@Override

public void onSurfaceCreated(GL10 gl, EGLConfig config) {

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

initTriangle();

}

@Override

public void onSurfaceChanged(GL10 gl, int width, int height) {

gl.glViewport(0, 0, width, height);

}

@Override

public void onDrawFrame(GL10 gl) {

gl.glClearColor(_red, _green, _blue, 1.0f);

gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

gl.glColor4f(0.5f, 0f, 0f, 0.5f);

gl.glVertexPointer(_nrOfVertices, GL10.GL_FLOAT, 0, _vertexBuffer);

gl.glDrawElements(GL10.GL_TRIANGLES, _nrOfVertices, GL10.GL_UNSIGNED_SHORT, _indexBuffer);

}

private void initTriangle() {

// float has 4 bytes

ByteBuffer vbb = ByteBuffer.allocateDirect(_nrOfVertices * 3 * 4);

vbb.order(ByteOrder.nativeOrder());

_vertexBuffer = vbb.asFloatBuffer();

// short has 4 bytes

ByteBuffer ibb = ByteBuffer.allocateDirect(_nrOfVertices * 2);

ibb.order(ByteOrder.nativeOrder());

_indexBuffer = ibb.asShortBuffer();

float[] coords = {

-0.5f, -0.5f, 0f, // (x1, y1, z1)

0.5f, -0.5f, 0f, // (x2, y2, z2)

0f, 0.5f, 0f // (x3, y3, z3)

};

_vertexBuffer.put(coords);

_indexBuffer.put(_indicesArray);

_vertexBuffer.position(0);

_indexBuffer.position(0);

}

}

上一页  1 2 

Tags:Android OpenGL 学习

编辑录入:coldstar [复制链接] [打 印]
赞助商链接