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
)、ポイント全体が描画されません。中心が画面上にない場合でも、ポイントをレンダリングするにはどうすればよいですか?