• <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 大龍 閱讀(1498) 評論(0)  編輯 收藏 引用

            日韩精品无码久久一区二区三| 久久久九九有精品国产| 久久亚洲国产欧洲精品一| 无码人妻久久一区二区三区免费丨| 国产农村妇女毛片精品久久| 2021精品国产综合久久| 亚洲va中文字幕无码久久不卡| 亚洲欧美一区二区三区久久| 久久精品成人欧美大片| 久久99久久成人免费播放| 国产免费久久精品丫丫| 久久久91人妻无码精品蜜桃HD| 国产精品va久久久久久久| 国产成人久久精品二区三区| 国产精品成人无码久久久久久| 久久久久99精品成人片| 思思久久99热免费精品6| 久久笫一福利免费导航 | 99久久国产亚洲高清观看2024| 一本久久知道综合久久| 久久99精品久久久久子伦| 久久A级毛片免费观看| 久久精品亚洲中文字幕无码麻豆 | 久久综合五月丁香久久激情| 中文成人久久久久影院免费观看| 狠狠色丁香久久婷婷综合蜜芽五月| 婷婷久久综合| 欧美熟妇另类久久久久久不卡| 久久免费视频观看| 久久精品综合网| 久久精品国产69国产精品亚洲| 久久精品国产黑森林| 色欲综合久久躁天天躁蜜桃| 色综合久久精品中文字幕首页| 内射无码专区久久亚洲| 久久精品国产亚洲AV无码麻豆| 99久久精品免费| 无码精品久久久久久人妻中字| 久久99精品久久久久久水蜜桃| 少妇久久久久久久久久| 欧美性大战久久久久久|