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

            亚洲国产日韩欧美综合久久| 久久综合亚洲鲁鲁五月天| 国产精品美女久久久久网| 久久久久免费精品国产| 午夜精品久久久久9999高清| 狠狠色婷婷久久一区二区| 国产精品久久久久AV福利动漫| 99久久国产综合精品网成人影院 | 久久久久久精品成人免费图片| 中文字幕无码免费久久| 久久精品成人欧美大片| 久久精品国产男包| 久久影院亚洲一区| 久久久久久综合一区中文字幕| 国内精品综合久久久40p| 精品久久久久久久久久中文字幕 | 久久精品国产亚洲av水果派| 亚洲国产精品成人久久蜜臀| 久久91综合国产91久久精品| 精品国产青草久久久久福利| 久久一区二区三区99| 亚洲国产精品久久66| 国产亚洲色婷婷久久99精品| 99久久精品免费看国产一区二区三区 | 国产精品欧美久久久天天影视| 久久久久亚洲AV片无码下载蜜桃| 99久久国产免费福利| 青青草国产精品久久| 色婷婷综合久久久久中文一区二区 | 亚洲精品美女久久777777| 国产日韩久久久精品影院首页| 香港aa三级久久三级| 久久最新精品国产| 91久久福利国产成人精品| 久久免费精品视频| 久久99精品久久久久久水蜜桃| 久久久久国产一级毛片高清版| 久久这里只精品国产99热| 日韩一区二区久久久久久| 国产A级毛片久久久精品毛片| 日韩一区二区久久久久久|