遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

看了些大家在論壇的討論, 似乎有不少同學有意用 OpenGL ES 寫遊戲, 但又好像不知道從那方面入手, 所以我決定為 cocoachina.com 寫幾篇教程, 和大家分享一下我在這方面的經驗, 希望對大家有點幫助, 也順便推廣一下 OpenGL ES 的應用! 

不過大家要注意的是, 這個教程所想包含的, 只是OpenGL ES 的入門和怎麼利用它寫 2D 遊戲, 至於本教程標題, 只是嘩眾取巧之作, 不能期望有什麼高深的學問呢 :).

讓我們轉入正題吧!在官方 SDK 建立一個 OpenGL ES 的項目非常簡單, 只要選擇”New Project”, 然後用” Cocoa Touch OpenGL Application” 的模版就可以了:

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

這時只要我們”Build and Go”, 就會看到一個旋轉的彩色四方形.

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

這時只要我們”Build and Go”, 就會看到一個旋轉的彩色四方形.

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

有了基本的東西, 接下來怎麼做呢? 非常幸運的是SDK 提供了不少例子可供我們利用, 我們下載和打開 CrashLanding 看看, 項目里有幾個檔案我們可以拿來借用一下 :

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

我們把 Texture2D.h, Texture2D.m, OpenGL_Internal.h 拖拉到我們的 Classes 里 (記得選”Copy items…”) :

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

Texture2D非常好用,我們不只可以用它載入貼圖, 更可以用它把貼圖畫上螢幕當為sprite 用, 這個不正是我們寫遊戲所需要的基本功能嗎? 爽!

但在沒編譯前,我們還有一件事要做:把 CoreGraphics.framework 加到我們的 Frameworks !

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

跟著我們要把 OpenGL ES 的起始代碼改一下, 讓我們可以寫2D 遊戲, 這部份,我們可以在 layoutSubviews 里做:

- (void)layoutSubviews 
{
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];

glViewport(0, 0, backingWidth, backingHeight);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, (float)backingWidth, 0, (float)backingHeight, 0, 100);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_TEXTURE_COORD_ARRAY);

glClearColor(0.0f, 0.0f, 0.0f, 1.0f);


[self drawView];
}

好了, 做了這麼多準備工作, 我們終於來到本篇最精彩的部份: 在螢幕上畫圖! 我們把想要用到的圖拖拉到 Resources 里,就可以在程序里把它們載入應用:

bg = [[Texture2D alloc] initWithImagePath:@"bg.jpg"];
sprites = [[Texture2D alloc] initWithImagePath:@"planet.png"];


這樣,我們在 drawView里就可以把圖畫在螢幕上了!

[bg drawAtPoint: CGPointMake(160.0f, 240.0f)];
[sprites drawAtPoint: CGPointMake(160.0f, 100.0f)];

看看我們的成果!很漂亮的畫面啊!呵呵。。。這篇就寫到這里,有時間再繼續寫下一篇。

遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)

注意:項目要用SDK Beta6編譯!

 

楼主的工程能编译过,
为什么?
照这做了个  就会出现这个?
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.0 failed with exit code 1

什么情况?

解决方法:
1) XCode Menu: ->Project -> Edit Active Target
2) Select Build Tab
3) Find "Framework Search Paths" under Search Paths section
4) Double Click to Edit
5) Delete all lines.
6) Rebuild Project 

分析:
Framework Search Paths中的路径是mac桌面开发库的路径,只要删除Framework Search Paths的所以路径就可以了,我已验证。

 

 

跟著我們要把 OpenGL ES 的起始代碼改一下, 讓我們可以寫2D 遊戲, 這部份,我們可以在 layoutSubviews 里做:

引用

- (void)layoutSubviews 
{
    [EAGLContext setCurrentContext:context];
    [self destroyFramebuffer];
    [self createFramebuffer];
    
    glViewport(0, 0, backingWidth, backingHeight);
    
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrthof(0, (float)backingWidth, 0, (float)backingHeight, 0, 100);
    
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    
    glEnableClientState (GL_VERTEX_ARRAY);
        glEnableClientState (GL_TEXTURE_COORD_ARRAY);
    
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

    
    [self drawView];
}


//where we want to write ?in which file?

转载于:https://www.cnblogs.com/pengyingh/articles/2388506.html