public Triangle() { ByteBuffer byteBuffer = ByteBuffer.allocateDirect(mTriangleCoordinates.length * 4); byteBuffer.order(ByteOrder.nativeOrder()); mVertexBuffer = byteBuffer.asFloatBuffer(); mVertexBuffer.put(mTriangleCoordinates); mVertexBuffer.position(0); int lVertexShader = CustomRenderer.loadShader(GLES20.GL_VERTEX_SHADER, mVertexShaderCode); int lFragmentShader = CustomRenderer.loadShader(GLES20.GL_FRAGMENT_SHADER, mFragmentShaderCode); // create empty program mProgram = GLES20.glCreateProgram(); // attach vertex shader GLES20.glAttachShader(mProgram, lVertexShader); // attach fragment shader GLES20.glAttachShader(mProgram, lFragmentShader); // create program executables GLES20.glLinkProgram(mProgram); }