(3)OpenGL ES绘制形状

你定义了要绘制的形状后,你就可以绘制它们了。使用OpenGLES 2.0会形状会有一点点复杂,因为API提供了大量的对渲染管线的控制能力。本文讲解如何绘制你在前文中定义的那些形状。

一、初始化形状

在你做任何绘制之前,你必须初始化形状然后加载它,考虑到内存和运行效率的优化,你应该尽可能的在Renderer的方法onSurfaceCreated()中进行初始化,代码如下:

public void onSurfaceCreated(GL10 unused, EGLConfig config) {
    ...

    // 初始化一个三角形
    mTriangle = new Triangle();
    // 初始化一个正方形
    mSquare = new Square();
}

二、绘制形状

使用OpenGLES 2.0绘制一个定义好的形状需要大量代码,因为你必须为图形渲染管线提供一大堆信息。下面这些定义是必须的:
- VertexShader-用于渲染形状的顶点的OpenGLES 图形代码。
- FragmentShader-用于渲染形状的外观(颜色或纹理)的OpenGLES 代码。
- Program-一个OpenGLES对象,包含了你想要用来绘制一个或多个形状的shader。

(1)定义着色器

你至少需要一个vertexshader来绘制一个形状和一个fragmentshader来为形状上色。这些形状必须被编译然后被添加到一个OpenGLES program中,program之后被用来绘制形状。下面是一个展示如何定义一个可以用来绘制形状的基本shader的例子:

 private final String vertexShaderCode =
            // This matrix member variable provides a hook to manipulate
            // the coordinates of the objects that use this vertex shader
            "uniform mat4 uMVPMatrix;" +
            "attribute vec4 vPosition;" +
            "void main() {" +
            // the matrix must be included as a modifier of gl_Position
            // Note that the uMVPMatrix factor *must be first* in order
            // 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值