iOS下OpenGL ES 3.0編程入門(一):構建Hello World環境

來源:互聯網
上載者:User

標籤:ios   opengl es   glkit   

OpenGL ES簡介:

     OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三維圖形 API 的子集,針對手機、PDA和遊戲主機等嵌入式裝置而設計。該API由Khronos集團定義推廣,Khronos是一個圖形軟硬體行業協會,該協會主要關注圖形和多媒體方面的開放標準。

OpenGL ES 3.0主要新功能有:1、 渲染管線多重增強,實現先進視覺效果的加速,包括遮擋查詢(Occlusion Query)、變緩反饋(Transform Feedback)、執行個體渲染(Instanced Rendering)、四個或更多渲染目標支援。2、 高品質ETC2/EAC紋理壓縮格式成為一項標準功能,不同平台上不再需要需要不同的紋理集。3、 新版GLSL ES 3.0著色語言,全面支援整數和32位浮點操作。4、 紋理功能大幅增強,支援浮點紋理、3D紋理、深度紋理、頂點紋理、NPOT紋理、R/RG單雙通道紋理、不可變紋理、2D陣列紋理、無二次冪限制紋理、陰影對比、調配(swizzle)、LOD與mip level clamps、無縫立方體貼圖、採樣對象、紋理MSAA消除鋸齒渲染器。5、一 系列廣泛的精確尺寸紋理和渲染緩衝格式,便攜行動裝置 App更簡單。
     而在iOS上,可以支援opengles3.0的最低環境是iphone5s ios7.0.

iOS下環境搭建:

     關於ios下環境搭建有好幾種,最簡單的是在建立工程的時候選擇game模板,然後如所示:


     不過,用這種方式,建立出來的工程有很多用不到的代碼,不利於我們one by one的學習,所以,我們就從最簡單的single view application工程說起,怎麼一步步去搭建opengl es環境。

     首先,建立一個single view application工程,然後,引入GlKit和OpenGLES。



     緊接著,在ViewController.h檔案裡引入GLKit/GLKit.h,將ViewController類的父類改成GLKViewController。

#import <UIKit/UIKit.h>#import <GLKit/GLKit.h>@interface ViewController : GLKViewController@end

     然後將storyboard中ViewController所對應的view的Custom Class改成GLKView。



     修改ViewController.m檔案,代碼如下:

#import "ViewController.h"#import <OpenGLES/ES3/gl.h>#import <OpenGLES/ES3/glext.h>@interface ViewController ()<GLKViewDelegate>{    EAGLContext *context; //EAGLContent是蘋果在ios平台下實現的opengles渲染層,用於渲染結果在目標surface上的更新。}@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];//這裡用的是opengles3.        if (!context) {        NSLog(@"Failed to create ES context");    }        GLKView *view = (GLKView *)self.view;    view.context = context;    view.drawableDepthFormat = GLKViewDrawableDepthFormat24;    [EAGLContext setCurrentContext:context];    glEnable(GL_DEPTH_TEST); //開啟深度測試,就是讓離你近的物體可以遮擋離你遠的物體。    glClearColor(0.1, 0.2, 0.3, 1); //設定surface的清除顏色,也就是渲染到螢幕上的背景色。}- (BOOL)prefersStatusBarHidden {    return YES;}-(void)glkView:(GLKView *)view drawInRect:(CGRect)rect{    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  //清除surface內容,恢複至初始狀態。}@end

     再次構建運行,如所示:



     至此,一個初步的opengles3的開發環境已經搭建完畢,因為ios平台的特殊性,所以我們很多時候不得不藉助ios下glkit庫去實現和簡化我們的操作,不過,對於大部分opengles的內容,我還是會脫離glkit,原汁原味的道出,這樣,對於以後的跨平台是大有裨益的。

     本文有不足之處,還望各位多多指正。







著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

iOS下OpenGL ES 3.0編程入門(一):構建Hello World環境

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.