Android Opengl es 2.0 画圆,网上说原理的文章挺多的,但要么是1.0的实现,要么无法跑起来。发现一个可以跑起来的方案:http://www.java2s.com/Open-Source/Android_Free_Code/OpenGL/Shape/mkabatek_androidOpenGLShapes.htm。在此记录一下。
原文中由于没有进行坐标转换,所以画出来的圆不是正圆,下面的代码对此进行了更正。当然,你也可以用其他方式变换,比如:http://androidblog.reindustries.com/a-real-open-gl-es-2-0-2d-tutorial-part-1/上面的变换方式。
主要类如下:
Circle.java:
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import android.opengl.GLES20;
import android.util.Log;
public class Circle {
static final int COORDS_PER_VERTEX = 3;
private int mProgram, mPositionHandle, mColorHandle, mMVPMatrixHandle;
private FloatBuffer vertexBuffer;
private float vertices[];
float color[] = {0.00f, 0.76953125f, 0.22265625f, 1.0f};
private final int vertexCount = 364 * 3 / COORDS_PER_VERTEX;
private final int vertexStride = COORDS_PER_VERTEX * 4; // 4 bytes per vertex
private final String vertexShaderCode ="attribute vec4 vPosition;"
+ "uniform mat4 uMVPMatrix;"
+ "void main() {"
+ " gl_Position = uMVPMatrix * vPosition;"
+ "}"