public void Draw(IGL10 gl) { gl.GlFrontFace(GL10.GlCw); gl.GlVertexPointer(3, GL10.GlFixed, 0, mVertexBuffer); gl.GlColorPointer(4, GL10.GlFixed, 0, mColorBuffer); gl.GlDrawElements(GL10.GlTriangles, 36, GL10.GlUnsignedByte, mIndexBuffer); }
public void OnDrawFrame(IGL10 gl) { // 清除屏幕缓存和深度缓存 gl.GlClear(GL10.GlColorBufferBit | GL10.GlDepthBufferBit); // 启用顶点坐标数据 gl.GlEnableClientState(GL10.GlVertexArray); // 启用贴图坐标数组数据 gl.GlEnableClientState(GL10.GlTextureCoordArray); // ① // 设置当前矩阵模式为模型视图。 gl.GlMatrixMode(GL10.GlModelview); gl.GlLoadIdentity(); // 把绘图中心移入屏幕2个单位 gl.GlTranslatef(0f, 0.0f, -2.0f); // 旋转图形 gl.GlRotatef(ma.angleY, 0, 1, 0); gl.GlRotatef(ma.angleX, 1, 0, 0); // 设置顶点的位置数据 gl.GlVertexPointer(3, GL10.GlFloat, 0, cubeVerticesBuffer); // 设置贴图的坐标数据 gl.GlTexCoordPointer(2, GL10.GlFloat, 0, cubeTexturesBuffer); // ② // 执行纹理贴图 gl.GlBindTexture(GL10.GlTexture2d, texture); // ③ // 按cubeFacetsBuffer指定的面绘制三角形 gl.GlDrawElements(GL10.GlTriangles, cubeFacetsBuffer.Remaining(), GL10.GlUnsignedByte, cubeFacetsBuffer); // 绘制结束 gl.GlFinish(); // 禁用顶点、纹理坐标数组 gl.GlDisableClientState(GL10.GlVertexArray); gl.GlDisableClientState(GL10.GlTextureCoordArray); // 递增角度值以便每次以不同角度绘制 }
public void Draw(int primitiveType, int offset, int numVertices) { IGL10 gl = _glGraphics.GL10; if (_indices != null) { _indices.Position(offset); gl.GlDrawElements(primitiveType, numVertices, GL10.GlUnsignedShort, _indices); } else { gl.GlDrawArrays(primitiveType, offset, numVertices); } }
public void Draw(IGL10 gl) { gl.GlFrontFace(IGL10Constants.GL_CW); gl.GlVertexPointer(3, IGL10Constants.GL_FLOAT, 0, mVertexBuffer); gl.GlColorPointer(4, IGL10Constants.GL_FLOAT, 0, mColorBuffer); gl.GlEnableClientState(IGL10Constants.GL_VERTEX_ARRAY); gl.GlEnableClientState(IGL10Constants.GL_COLOR_ARRAY); // draw all 36 triangles gl.GlDrawElements(IGL10Constants.GL_TRIANGLES, 36, IGL10Constants.GL_UNSIGNED_BYTE, mIndexBuffer); gl.GlDisableClientState(IGL10Constants.GL_VERTEX_ARRAY); gl.GlDisableClientState(IGL10Constants.GL_COLOR_ARRAY); }
public override void Present(float deltaTime) { IGL10 gl = _glGraphics.GL10; gl.GlViewport(0, 0, _glGraphics.Width, _glGraphics.Height); gl.GlClear(GL10.GlColorBufferBit); gl.GlMatrixMode(GL10.GlProjection); gl.GlLoadIdentity(); gl.GlOrthof(0, 540, 0, 960, 1, -1); gl.GlEnable(GL10.GlTexture2d); _texture.BindTexture(); gl.GlEnableClientState(GL10.GlVertexArray); gl.GlEnableClientState(GL10.GlTextureCoordArray); _vertices.Position(0); gl.GlVertexPointer(2, GL10.GlFloat, _vertexSize, _vertices); _vertices.Position(2); gl.GlTexCoordPointer(2, GL10.GlFloat, _vertexSize, _vertices); gl.GlDrawElements(GL10.GlTriangles, 6, GL10.GlUnsignedShort, _indices); }
public void Draw (IGL10 gl) { gl.GlFrontFace (GL10.GlCw); gl.GlVertexPointer (3, GL10.GlFixed, 0, mVertexBuffer); gl.GlColorPointer (4, GL10.GlFixed, 0, mColorBuffer); gl.GlDrawElements (GL10.GlTriangles, 36, GL10.GlUnsignedByte, mIndexBuffer); }