我正在制作一款涉及使用 GL_POINT 渲染点的 iPhone 游戏。但是,当点的中心不在屏幕上时,我仍然想绘制仍然在屏幕上的点的任何部分。这是我用来渲染要点的代码。
-(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
),整个点都不会被绘制。即使中心不在屏幕上,我怎样才能让点仍然呈现?