我正在開發一款適用於iPhone的OpenGL-ES生活程序遊戲,我有一個包含整個網格布爾值的數組,我爲網格數組所做的是:iPhone OGLES生命遊戲繪圖
grid = (BOOL *)malloc(2*XSize*YSize*sizeof(BOOL));
我想知道將這個線性陣列繪製到屏幕上的好方法是什麼。
我試圖創建Vertices數組,然後通過glDrawArray繪圖,但我似乎無法得到它的權利,所以我想知道如果有人可以幫助我。這是我想現在是時候渲染某種原因造成文物的方法:
- (void)GridToVertices {
int current = 0;
for(int y=-backingHeight/2;y<backingHeight/2;y++) {
for(int x=-backingWidth/2;x<backingWidth/2;x++) {
Vertices[current] = x;
Vertices[current+1] = y;
current+=2;
}
}
}
然後渲染它像這樣:我想通了,我做錯了什麼
- (void)render {
[self GridToVertices];
[self GridToColors];
[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
glViewport(0, 0, backingWidth, backingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
float Left = -backingWidth/2;
float Right = backingWidth/2;
float Up = -backingHeight/2;
float Down = backingHeight/2;
glOrthof(Left, Right, Up, Down, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glVertexPointer(2, GL_FLOAT, 0, Vertices);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, Colors);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, [grid resolution]);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
我仍然要回顧一下爲什麼這種方法能夠正常工作,但它確實有效! – Parad0x13 2010-07-11 19:48:12