【Android开发Wiki】进阶篇使用OpenGL ES(三)-绘制形状.pdfVIP

【Android开发Wiki】进阶篇使用OpenGL ES(三)-绘制形状.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【Android开发Wiki】进阶篇使用OpenGL ES(三)-绘制形状

eoe 移动开发者社区 / 原文链接:/training/graphics/opengl/draw.html 用OpenGL定义好要绘制的形状后,你就可能想把他们绘制在屏幕上。基于OpenGL ES 2.0 绘制这些形状,需要的代码量比你想象中要多一点,这是因为2.0的API提供了大量对于图 像渲染管道的控制。 这节课将会介绍如何使用OpenGL ES 2.0的API绘制你在前一节课定 义好的形状。 初始化形状 在你制图之前,你必须初始化和加载你计划要绘制的形状。你要在内存和处理速率的渲染器 中的onSurfaceCreated()方法对形状初始化,除非在程序执行的过程中,形状的结构(原 始坐标)发生了变化。 public void onSurfac/Drawing_ShapeseCreated(GL10 unused, EGLC 1onfig config){ 2 ... 3 4 // initialize a triangle 5 mTriangle = new Triangle(); 6 // initialize a square 7 mSquare = new Square(); 8 } 绘制形状 使用OpenGL ES 2.0绘制形状需要大量的代码,因为你需要提供大量的图像渲染器管道的细 节。具体地,你需要定义: * 顶点着色器(Vertex Shader) - OpenGL ES图像中渲染形 状顶点的代码 * 片断着色器(Fragment Shader) - OpenGL ES渲染形状表面颜色与纹理 的代码 * 程序(Program)- 包含了你想要用来绘制形状的着色器的OpenGL ES对象 你需 要至少一个顶点着色器来绘制图像,一个片断着色器去给图像着色。这些着色器必须被定义 和添加到一个OpenGL ES程序中,它将会在绘制形状时被用到。下面是一个基本的定义着色 器的例子: 1private final String vertexShaderCode = 2 attribute vec4 vPosition; + 3 void main() { + 4 gl_Position = vPosition; + 5 }; 6 7 private final String fragmentShaderCode = 8 precision mediump float; + 9 uniform vec4 vColor; + 10 void main() { + eoe 移动开发者社区 / 11 gl_FragColor = vColor; + 12 }; 包含了OpenGL着色语言(GLSL)的着色器在被OpenGL ES环境使用之前,必须先被定义。 你可以在渲染类中创建一个实用的方法来定义这些着色器: public static int loadShader(int type, String shaderCode){ 1 2 // create a vertex shader type (GLES20.GL_VERTEX_SHADER) 3 // or a fragment shader type (GLES20.GL_FRAGMENT_SHADER) 4 int shader = GLES20.glCreateShader(type); 5 6 // add the source code to the shader and compile it 7 GLES20.glShaderSource(shader, shaderCode); 8 GLES20.glCompileShader(shader); 9 10 return shader; 11 } 12 为了绘制形状,你必须编写着色器的代码,并把它们添加到OpenGL ES程序对象中,与程序 连接起来。你可以在绘制对象的构造器做这些事情,这样它就会只运行一次。 备注:定义OpenGL ES着色器并于程

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档