成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android OpenGL ES 2.0繪圖:應(yīng)用投影和相機(jī)視圖

移動(dòng)開(kāi)發(fā) Android
這一節(jié)將描述如何創(chuàng)建一個(gè)投影和一個(gè)相機(jī)視圖,并將它們應(yīng)用于你的GLSurfaceView的形狀繪制過(guò)程中。在OpenGL ES環(huán)境中,投影和相機(jī)視圖讓繪制對(duì)象以更接近于人們?nèi)庋鬯吹降膶?shí)物對(duì)象的樣子顯示。這項(xiàng)仿真技術(shù)是通過(guò)對(duì)繪制對(duì)象的坐標(biāo)進(jìn)行精確的數(shù)學(xué)變換而實(shí)現(xiàn)的。

在OpenGL ES環(huán)境中,投影和相機(jī)視圖讓繪制對(duì)象以更接近于人們?nèi)庋鬯吹降膶?shí)物對(duì)象的樣子顯示。這項(xiàng)仿真技術(shù)是通過(guò)對(duì)繪制對(duì)象的坐標(biāo)進(jìn)行精確的數(shù)學(xué)變換而實(shí)現(xiàn)的。

投影:這種變換是根據(jù)所在GLSurfaceView的寬和高調(diào)整繪制對(duì)象的坐標(biāo)。

如果沒(méi)有此變換,對(duì)象會(huì)被不規(guī)則比例的視圖所扭曲變形。

通常一個(gè)投影變換只有當(dāng)創(chuàng)建OpenGLView或你的renderer類的 onSurfaceChange()方法發(fā)生變化時(shí)才被計(jì)算,更多關(guān)于OpenGL ES預(yù)測(cè)和坐標(biāo)映射的信息,請(qǐng)參閱代碼Mapping Coordinates for Drawn Objects。

相機(jī)視圖:這種變換是基于一個(gè)虛擬相機(jī)的位置來(lái)調(diào)整繪制對(duì)象的坐標(biāo)。需要主要的 是,OpenGL ES并沒(méi)有定義一個(gè)真實(shí)的相機(jī)對(duì)象,而是提供了一些工具方法變換繪制對(duì)象的顯示來(lái)模擬一個(gè)相機(jī)。一個(gè)相機(jī)視圖變換可能在創(chuàng)建GLSurfaceView時(shí) 被計(jì)算一次,或根據(jù)用戶行為或應(yīng)用程序功能動(dòng)態(tài)地改變。

這一節(jié)將描述如何創(chuàng)建一個(gè)投影和一個(gè)相機(jī)視圖,并將它們應(yīng)用于你的GLSurfaceView的形狀繪制過(guò)程中。

一、定義一個(gè)投影

一個(gè)投影變換的數(shù)據(jù)是在GLSurfaceView.Renderer類的 onSurfaceChanged()方法中計(jì)算得到的。下面的示例代碼演示了根據(jù)傳入GLSurfaceView的寬和高計(jì)算比例,并使用Matrix 類frustumM()方法來(lái)填充一個(gè)投影變換:

  1. [java] view plaincopyprint? 
  2. @Override 
  3. public void onSurfaceChanged(GL10 unused, int width, int height) { 
  4. GLES20.glViewport(00, width, height); 
  5. float ratio = (float) width / height; 
  6. // 在onDrawFrame()方法中,將投影矩陣應(yīng)用到對(duì)象的坐標(biāo) 
  7. Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1137); 

 這段代碼填充了一個(gè)投影矩陣:mProjMatrix,可以把它與一個(gè)相機(jī)視圖變換在onDrawFrame()方法中結(jié)合起來(lái)使用。

注:如果只是一個(gè)投影變換應(yīng)用到你的繪制對(duì)象中,通常會(huì)導(dǎo)致什么也看不到。一般來(lái)說(shuō),你必須再申請(qǐng)一個(gè)相機(jī)視圖變換才能看到屏幕上的東東。

二、定義一個(gè)相機(jī)視圖

添加一個(gè)相機(jī)視圖變換讓你的繪制對(duì)象的變換流程變得更加完整。在下面的示例代碼中,使用Matrix.setLookAtM()方法來(lái)計(jì)算相機(jī)視圖變換,然后結(jié)合前面所計(jì)算的投影矩陣。將合并后的變換矩陣傳遞給繪制的形狀。

  1. [java] view plaincopyprint? 
  2. @Override 
  3. public void onDrawFrame(GL10 unused) { 
  4. ... 
  5. // 設(shè)置相機(jī)的位置(視圖矩陣) 
  6. Matrix.setLookAtM(mVMatrix, 000, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f); 
  7. // 計(jì)算投影和視圖變換 
  8. Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0); 
  9. // 繪制形狀 
  10. mTriangle.draw(mMVPMatrix); 

三、應(yīng)用投影和相機(jī)視圖變換

為了使用合并后的投影和相機(jī)視圖變換矩陣,需要修改你的圖形對(duì)象的draw()方法,接收聯(lián)合變換矩陣并應(yīng)用到你的形狀上:

  1. [java] view plaincopyprint? 
  2. public void draw(float[] mvpMatrix) { // 傳遞計(jì)算出的變換矩陣 
  3. ... 
  4. // 獲得形狀的變換矩陣的handle 
  5. mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix"); 
  6. // 應(yīng)用投影和視圖變換 
  7. GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1false, mvpMatrix, 0); 
  8. // 繪制三角形 
  9. GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount); 
  10. ... 
  11. }

 

責(zé)任編輯:閆佳明 來(lái)源: bbs.9ria
相關(guān)推薦

2014-04-29 14:16:54

2014-04-29 14:27:59

OpenGL ES 2Android繪制紋理

2014-04-29 14:08:40

OpenGL ESAndroid應(yīng)用投影

2014-04-24 11:16:00

OpenGL ES 2入門

2014-04-24 13:26:24

OpenGL ES2.iOSiPhone

2014-04-24 14:00:35

OpenGL ES 2編程

2013-04-26 10:26:08

2013-09-02 15:46:06

OpenGLWindows

2014-07-16 15:49:13

AndroidOpenGL 4.4

2014-04-29 14:05:02

OpenGL ESAndroid添加動(dòng)作

2010-02-14 15:27:25

2013-09-26 13:43:13

iOS開(kāi)發(fā)OpenGL ES教程圖元

2014-04-24 13:35:11

OpenGL ES2.iOSAndroid

2010-01-26 10:52:01

Android繪圖

2014-04-29 13:58:11

OpenGL ESAndroid響應(yīng)觸屏事件

2011-07-29 10:51:41

iPhone 全屏顯示 視圖

2011-11-23 11:20:21

投影儀常見(jiàn)問(wèn)題

2013-07-05 14:45:05

AndroidOpenGL ES開(kāi)發(fā)

2017-07-19 15:25:16

iOS開(kāi)發(fā)ARKitOpen GL

2017-07-04 12:26:14

ARARKit
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品一区在线观看 | 九九久久在线看 | 欧美日韩网站 | 久久午夜电影 | 日本一区二区不卡 | 自拍偷拍小视频 | 精品一区二区久久久久久久网站 | 久久av网站 | 亚洲传媒在线 | 成人av网站在线观看 | 亚洲国产免费 | 亚洲精品一区二区三区四区高清 | 久久久黄色 | www.玖玖玖| 久久精品亚洲精品国产欧美 | 99re在线视频 | 亚洲国产一区二区三区四区 | 久久亚洲欧美日韩精品专区 | 欧美天堂一区 | 一二三区av | 国产免费视频 | 亚洲三级免费看 | 精品成人69xx.xyz | 精品小视频 | 欧美一级二级三级视频 | 在线观看国产 | 中文字幕在线人 | 国产一级一级毛片 | 亚洲免费成人 | 欧美日韩精品一区二区天天拍 | 国产精品18久久久 | 天天干成人网 | 欧美aaaaa| 国产精品久久二区 | 久久精品久久久久久 | 国产精品高潮呻吟久久久久 | 欧美激情亚洲天堂 | 亚洲综合国产 | 久久精品av麻豆的观看方式 | 欧美一区不卡 | 国产精品一二三区 |