public Triangle () { // initialize vertex byte buffer for shape coordinates ByteBuffer bb = ByteBuffer.AllocateDirect ( // (number of coordinate values * 4 bytes per float) triangleCoords.Length * 4); // use the device hardware's native byte order bb.Order (ByteOrder.NativeOrder ()); // create a floating point buffer from the ByteBuffer vertexBuffer = bb.AsFloatBuffer (); // add the coordinates to the FloatBuffer vertexBuffer.Put (triangleCoords); // set the buffer to read the first coordinate vertexBuffer.Position (0); // prepare shaders and OpenGL program int vertexShader = MyGLRenderer.LoadShader (GLES30.GlVertexShader, vertexShaderCode); int fragmentShader = MyGLRenderer.LoadShader (GLES30.GlFragmentShader, fragmentShaderCode); mProgram = GLES30.GlCreateProgram (); // create empty OpenGL Program GLES30.GlAttachShader (mProgram, vertexShader); // add the vertex shader to program GLES30.GlAttachShader (mProgram, fragmentShader); // add the fragment shader to program GLES30.GlLinkProgram (mProgram); // create OpenGL program executables }
public Square() { // initialize vertex byte buffer for shape coordinates ByteBuffer bb = ByteBuffer.AllocateDirect( // (# of coordinate values * 4 bytes per float) squareCoords.Length * 4); bb.Order(ByteOrder.NativeOrder()); vertexBuffer = bb.AsFloatBuffer(); vertexBuffer.Put(squareCoords); vertexBuffer.Position(0); // initialize byte buffer for the draw list ByteBuffer dlb = ByteBuffer.AllocateDirect( // (# of coordinate values * 2 bytes per short) drawOrder.Length * 2); dlb.Order(ByteOrder.NativeOrder()); drawListBuffer = dlb.AsShortBuffer(); drawListBuffer.Put(drawOrder); drawListBuffer.Position(0); // prepare shaders and OpenGL program int vertexShader = MyGLRenderer.LoadShader(GLES30.GlVertexShader, vertexShaderCode); int fragmentShader = MyGLRenderer.LoadShader(GLES30.GlFragmentShader, fragmentShaderCode); mProgram = GLES30.GlCreateProgram(); // create empty OpenGL Program GLES30.GlAttachShader(mProgram, vertexShader); // add the vertex shader to program GLES30.GlAttachShader(mProgram, fragmentShader); // add the fragment shader to program GLES30.GlLinkProgram(mProgram); // create OpenGL program executables }