您的位置:首页 > 移动开发 > Android开发

Android 3D 笔记(入门二)-小知识点回味

2017-06-01 12:08 218 查看

清楚了的

GL10:意味着可以使用OpenGL ES 1.0标准中定义的所有函数。

需要再次学习的

问题一

public class TriangleRenderer implements GLSurfaceView.Renderer {
private GLSurfaceView glSurfaceView;

public TriangleRenderer(GLSurfaceView glSurfaceView) {
this.glSurfaceView = glSurfaceView;
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
//        this.firstTriangle(gl);
//        this.secondTriangle(gl);
//当前存在的问题就是画出来的内容一直闪烁是什么鬼,就先这样吧,先看看纹理。
LogUtil.i("onSurfaceCreated");
}

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
LogUtil.i("onSurfaceChanged");
}

@Override
public void onDrawFrame(GL10 gl) {
this.secondTriangle(gl);
//后来我试了一下放到这个方法里就不会闪烁啦,所以我们是没有搞清楚,复写的这三个方法的细节咯。
}

private void secondTriangle(GL10 gl) {
final int vertexSize = (2 + 4) * 4;

gl.glClearColor(0, 0, 0, 1);//设置背景的缓冲区颜色。
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);//用缓冲区中的颜色来清理试图内容。

gl.glViewport(0, 0, this.glSurfaceView.getWidth(), this.glSurfaceView.getHeight());//定义视口
gl.glMatrixMode(GL10.GL_PROJECTION);//设置据怎类型为投影矩阵。

gl.glLoadIdentity();//重置当前指定的矩阵为单位矩阵.
//gl.glOrthof(0,320,1,0,480,-1);
gl.glOrthof(0, 320, 0, 480, 1, -1);

ByteBuffer byteBuffer = ByteBuffer.allocateDirect(3 * vertexSize);//三个定点,每个由xy组成,每个浮点数占4个字节(只能使用XY表示定点坐标z轴默认为0)
byteBuffer.order(ByteOrder.nativeOrder());
FloatBuffer floatBuffer = byteBuffer.asFloatBuffer();
float[] array = {
/*坐标*/10f, 30f,/*颜色*/1, 0, 0, 1,
/*坐标*/310f, 30f,/*颜色*/0, 1, 0, 1,
/*坐标*/150f, 450f,/*颜色*/0, 0, 1, 1
};
floatBuffer.put(array);
floatBuffer.flip();

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
floatBuffer.position(0);
gl.glVertexPointer(2, GL10.GL_FLOAT, vertexSize, floatBuffer);
floatBuffer.position(2);
gl.glColorPointer(4, GL10.GL_FLOAT, vertexSize, floatBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
}
}


现象:


public void onSurfaceCreated(GL10 gl, EGLConfig config)
调用
secondTriangle
执行的结果就会持续闪烁

public void onDrawFrame(GL10 gl)
调用
secondTriangle
执行的结果就没问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息