• <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)  編輯 收藏 引用

            香蕉99久久国产综合精品宅男自 | 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 色播久久人人爽人人爽人人片aV| 久久久精品久久久久久| 亚洲а∨天堂久久精品| 亚洲中文字幕无码久久综合网 | 久久婷婷五月综合国产尤物app| 亚洲AV无一区二区三区久久| 国产婷婷成人久久Av免费高清| 伊人热人久久中文字幕| 综合久久一区二区三区 | 久久精品国内一区二区三区| 国产叼嘿久久精品久久| 久久国产欧美日韩精品免费| 精品久久久久香蕉网| 香蕉久久夜色精品国产尤物| 精品综合久久久久久97超人| 2020久久精品亚洲热综合一本| 亚洲国产精品久久久久| 久久精品国产亚洲AV香蕉| 国产精品九九久久免费视频| 少妇内射兰兰久久| 欧美久久久久久| 久久无码一区二区三区少妇| 97超级碰碰碰久久久久| 久久亚洲国产精品成人AV秋霞| 国产亚州精品女人久久久久久| 久久99国产综合精品| 7777精品久久久大香线蕉| 亚洲精品tv久久久久| 青草久久久国产线免观| 国产成人综合久久精品尤物| 嫩草影院久久99| 久久精品一区二区三区AV| 欧美粉嫩小泬久久久久久久| 91久久精品国产成人久久| 欧美一区二区精品久久| 久久777国产线看观看精品| 久久久久人妻一区精品性色av| 亚洲精品乱码久久久久久按摩| 久久经典免费视频|