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

            色偷偷88欧美精品久久久| 亚洲va久久久噜噜噜久久狠狠| 一本久道久久综合狠狠爱| 亚洲AV日韩精品久久久久| 久久久亚洲裙底偷窥综合| 亚洲国产精品久久66| 久久婷婷国产剧情内射白浆| 性高湖久久久久久久久| 91精品国产高清久久久久久io| 国产精品亚洲综合久久| 久久久久婷婷| 久久久WWW成人免费毛片| 中文字幕久久精品| 欧美成a人片免费看久久| 青青草国产成人久久91网| 久久狠狠高潮亚洲精品| 久久亚洲国产成人精品性色| 久久妇女高潮几次MBA| 成人久久综合网| 伊人伊成久久人综合网777| 91精品国产综合久久久久久| 无夜精品久久久久久| 国产精品视频久久| 精品综合久久久久久97| 久久播电影网| 久久涩综合| 亚洲国产精品久久久久婷婷软件| 亚洲AV成人无码久久精品老人| 久久久久女教师免费一区| 亚洲国产精品婷婷久久| 97久久天天综合色天天综合色hd| 狠狠色婷婷久久一区二区| 久久亚洲高清综合| 久久久久一区二区三区| AAA级久久久精品无码片| 久久电影网2021| 久久久噜噜噜久久| 办公室久久精品| 久久久久免费精品国产| 国产精品久久婷婷六月丁香| 久久久中文字幕日本|