遊戲是這樣寫成的 (第一篇: 建立 OpenGL ES 項目)
看了些大家在論壇的討論, 似乎有不少同學有意用 OpenGL ES 寫遊戲, 但又好像不知道從那方面入手, 所以我決定為 cocoachina.com 寫幾篇教程, 和大家分享一下我在這方面的經驗, 希望對大家有點幫助, 也順便推廣一下 OpenGL ES 的應用!
不過大家要注意的是, 這個教程所想包含的, 只是OpenGL ES 的入門和怎麼利用它寫 2D 遊戲, 至於本教程標題, 只是嘩眾取巧之作, 不能期望有什麼高深的學問呢 :).
讓我們轉入正題吧!在官方 SDK 建立一個 OpenGL ES 的項目非常簡單, 只要選擇”New Project”, 然後用” Cocoa Touch OpenGL Application” 的模版就可以了:
這時只要我們”Build and Go”, 就會看到一個旋轉的彩色四方形.
這時只要我們”Build and Go”, 就會看到一個旋轉的彩色四方形.
有了基本的東西, 接下來怎麼做呢? 非常幸運的是SDK 提供了不少例子可供我們利用, 我們下載和打開 CrashLanding 看看, 項目里有幾個檔案我們可以拿來借用一下 :
我們把 Texture2D.h, Texture2D.m, OpenGL_Internal.h 拖拉到我們的 Classes 里 (記得選”Copy items…”) :
Texture2D非常好用,我們不只可以用它載入貼圖, 更可以用它把貼圖畫上螢幕當為sprite 用, 這個不正是我們寫遊戲所需要的基本功能嗎? 爽!
但在沒編譯前,我們還有一件事要做:把 CoreGraphics.framework 加到我們的 Frameworks !
跟著我們要把 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)];
看看我們的成果!很漂亮的畫面啊!呵呵。。。這篇就寫到這里,有時間再繼續寫下一篇。
注意:項目要用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