0
我正在制作一个涉及使用GL_POINT呈现点的iPhone游戏。但是,当点的中心在屏幕外时,我仍然想要绘制仍在屏幕上的点的任何部分。这里是我用来表达观点的代码。GL_POINT在中心关闭时不呈现屏幕
-(void)render {
if (!fill || !outline || !active || dead)
return;
NSLog(@"rendering");
glPushMatrix();
glLoadIdentity();
glMultMatrixf(matrix);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_SMOOTH);
glEnable(GL_POINT_SMOOTH);
glPointSize(scale.x*2);
[outline render];
glPointSize(2*(scale.x-kLineWidth));
[fill render];
glPopMatrix();
}
注意,它会记录"rendering"
时应该呈现,所以这种方法得到正确调用。
和[outline render]
和[fill render]
方法看起来像这样
-(void)render {
// load arrays into the engine
glVertexPointer(vertexSize, GL_FLOAT, 0, vertexes);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(colorSize, GL_FLOAT, 0, colors);
glEnableClientState(GL_COLOR_ARRAY);
//render
glDrawArrays(renderStyle, 0, vertexCount);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
}
,我使用此代码
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-kScreenWidth/2.0 + xPan, kScreenWidth/2.0 + xPan, -kScreenHeight/2.0 + yPan, kScreenHeight/2.0 + yPan, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
但使用“平移”效果时,该点的中心不在屏幕上(在与glOrthof
平移之后),整个点不被绘制。即使中心不在屏幕上,我该如何使点仍然呈现?
我使用屏幕外缓冲区方法,它工作正常。谢谢! – 2012-08-12 15:30:13