• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            Android OpenGL ES 畫正方形

            最近玩玩Android的openGL,做了點注釋,有用看看,沒有了無視

              Java代碼

              public class GL1 extends Activity {

              private GLSurfaceView mGLSurfaceView;

              @Override

              public void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);

              mGLSurfaceView = new GLSurfaceView(this);

              mGLSurfaceView.setRenderer(new One());

              setContentView(mGLSurfaceView);

              }

              @Override

              protected void onResume() {

              super.onResume();

              mGLSurfaceView.onResume();

              }

              @Override

              protected void onPause() {

              super.onPause();

              mGLSurfaceView.onPause();

              }

              }

              /**

              * 渲染器

              *

              * @author yaoyuan

              *

              */

              class One implements Renderer {

              private Square square;

              public One() {

              square = new Square();

              }

              /**

              * 初始化視圖

              */

              public void onDrawFrame(GL10 gl) {

              /*

              * 清空緩沖區預設值

              *

              * GL_COLOR_BUFFER_BIT 顏色緩沖區

              *

              * GL_DEPTH_BUFFER_BIT 深度緩沖區

              *

              * GL_STENCIL_BUFFER_BIT 模板緩沖區

              */

              gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

              gl.glLoadIdentity();

              //乘一個翻譯矩陣代替當前的矩陣

              gl.glTranslatef(0.0f, 0.0f, -6.0f);

              //畫圖形

              square.draw(gl);

              }

              /**

              * 視圖改變時調用

              */

              public void onSurfaceChanged(GL10 gl, int width, int height) {

              if (height == 0) {

              height = 1;

              }

              gl.glViewport(0, 0, width, height);

              /**

              * 指定當前的矩陣模式

              *

              * GL_MODELVIEW 模型視圖 GL_PROJECTION 投影 GL_TEXTURE 紋理

              */

              gl.glMatrixMode(GL10.GL_PROJECTION);

              gl.glLoadIdentity();

              // 設置一個透視投影矩陣

              GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,

              100.0f);

              gl.glMatrixMode(GL10.GL_MODELVIEW);

              gl.glLoadIdentity();

              }

              /**

              * 視圖創建時調用

              */

              public void onSurfaceCreated(GL10 gl, EGLConfig config) {

              /*

              * 設置陰影模式 1.GL_FLAT 扁平 2.GL_SMOOTH 平滑

              */

              gl.glShadeModel(GL10.GL_SMOOTH);

              // 指定顏色緩沖區值

              gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

              // 指定深度緩沖區值

              gl.glClearDepthf(1.0f);

              // 可用GL服務端功能

              gl.glEnable(GL10.GL_DEPTH_TEST);

              /*

              * 深度緩存比較

              *

              * GL_NEVER 不通過

              *

              * GL_LESS 如果傳入的深度值小于存儲深度的值,通過

              *

              * GL_EQUAL 如果傳入的傳遞深度值等于存儲的深度值,通過

              *

              * GL_LEQUAL 如果傳入的深度值小于或等于存儲的深度值,通過

              *

              * GL_GREATER 如果傳入的深度值大于存儲深度值更大,通過

              *

              * GL_NOTEQUAL 如果傳入的深度值不等于存儲深度值,通過

              *

              * GL_GEQUAL 如果傳入的深度值大于或等于存儲深度值,通過

              *

              * GL_ALWAYS 始終通過

              */

              gl.glDepthFunc(GL10.GL_LEQUAL);

              // 指定特定于實現的提示

              gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);

              }

              }

              /**

              * 圖形

              *

              * @author yaoyuan

              *

              */

              class Square {

              private FloatBuffer vertexBuffer;

              private float vertices[] = {

              -1.0f, 1.0f, 0.0f,

              1.0f, 1.0f, 0.0f,

              -1.0f, -1.0f, 0.0f,

              1.0f, -1.0f, 0.0f

              };

              public Square() {

              ByteBuffer byteBuf = ByteBuffer.allocateDirect(vertices.length * 4);

              byteBuf.order(ByteOrder.nativeOrder());

              vertexBuffer = byteBuf.asFloatBuffer();

              vertexBuffer.put(vertices);

              vertexBuffer.position(0);

              }

              public void draw(GL10 gl) {

              // 定義前、后面對(GL_CW順時針、GL_CCW逆時針)

              gl.glFrontFace(GL10.GL_CW);

              // 定義一個定點坐標數組

              gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);

              /*

              * 啟用客戶端功能

              *

              * GL_COLOR_ARRAY 當glDrawArrays、glDrawElements被調用時,顏色數組可以被讀寫

              *

              * GL_NORMAL_ARRAY 當glDrawArrays、glDrawElements被調用時,普通數組可以被讀寫

              *

              * GL_TEXTURE_COORD_ARRAY 當glDrawArrays、glDrawElements被調用時,踐理?酵可以被讀寫

              *

              * GL_VERTEX_ARRAY 當glDrawArrays、glDrawElements被調用時,矩陣數組可以被讀寫

              */

              gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

              // 從數組數據中渲染圖元

              gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);

              // 禁用客戶端功能

              gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

              }

              }

            posted on 2011-01-10 16:02 大龍 閱讀(1499) 評論(0)  編輯 收藏 引用

            久久久久久精品免费免费自慰| 久久人人爽人人爽人人片AV高清| 久久精品国产91久久综合麻豆自制| 亚洲成色www久久网站夜月| 久久综合狠狠综合久久综合88 | 精品国产乱码久久久久久1区2区 | 久久婷婷五月综合成人D啪| 午夜视频久久久久一区| 亚洲国产美女精品久久久久∴| 精品久久久久久| 三级片免费观看久久| 久久久久99精品成人片直播| 国产精品成人精品久久久| 777午夜精品久久av蜜臀| 成人国内精品久久久久一区| 亚洲人成网站999久久久综合| 久久精品午夜一区二区福利| 亚洲人成网站999久久久综合| 色综合久久久久网| 久久久久国产精品熟女影院| 亚洲精品国产自在久久| 99久久综合狠狠综合久久| 亚洲AV日韩精品久久久久| 亚洲精品无码久久久| 国产精品久久久久久福利漫画| 久久精品免费一区二区| 久久久久国产精品麻豆AR影院 | 一本大道久久香蕉成人网| 久久亚洲精品中文字幕三区| 久久综合噜噜激激的五月天| 亚洲午夜久久久久久久久电影网 | 亚洲国产天堂久久综合| 精品水蜜桃久久久久久久| 久久久久中文字幕| 狠狠色婷婷综合天天久久丁香 | 99久久人妻无码精品系列蜜桃| 99精品国产99久久久久久97| 久久精品国产乱子伦| 亚洲日本va中文字幕久久| 亚洲国产精品无码久久SM| 国产成人精品三上悠亚久久|