看这篇文章前,请先通过baidu或google了解VBO在“OpenGL ES 程序”中的应用的原理和好处,当然如果你已经对VA , VBO, VAO等知识理解的很好了就完全可以直接看教程了。这篇文章我还是会和以前一样采用贴代码的形式,如果你发现某一个函数中的参数你不熟悉,请baidu或google。
我们这次是在GLKit框架下绘制一个立方体,如下图所示:
下面简单的叙述一下整个项目的创建过程:
1. 打开Xcode创建一个Single View Application , 然后打开storyboard将当前ViewControllor上绑定的视图设置为GLKView,这一步很重要,否则系统将不知道如何加载View
2. 在ViewController的头文件中,导入<GLKit/GLKit.h> ,并让当前ViewController继承自GLKViewController
3. 在ViewController的实现文件中,我们写入如下的代码:
#import "ViewController.h"
@interface ViewController ()
{
float _rotation;
GLuint vertexBufferID;
GLuint indexBufferID;
}
@property (strong,nonatomic) EAGLContext*context;
@property (strong,nonatomic) GLKBaseEffect*baseEffect;
- (void)setupGL;
- (void)tearDownGL;
@end
@implementationViewController
typedef struct {
float Position[3];
}Vertex;
const VertexVertices[] = {
{ { 0.5f, -0.5f, 0.0f}},
{ { 0.5f, 0.5f, 0.0f}},
{ {-0.5f, 0.5f, 0.0f}},
{ {-0.5f, -0.5f, 0.0f}},
{ { 0.5f, -0.5f, -0.5f}},
{ { 0.5f, 0.5f, -0.5f}},
{ {-0.5f, 0.5f, -0.5f}},
{ {-0.5f, -0.5f, -0.5f}}
};
const GLubyteIndices[] = {
// Front
0, 1, 2,
2, 3, 0,
// Back
4, 6, 5,