3Dゲームを作っています。ゲーム内にオブジェクトがあります。敵が自分の位置に当たったときに、画面が短時間赤くなるようにします。カメラの位置にフルスクリーンの赤い正方形をレンダリングすることで、これを行うことにしました。これは私の render メソッドにある私の試みです。
RenderQuadTerrain();
//Draw the skybox
CreateSkyBox(vNewPos.x, vNewPos.y, vNewPos.z,3500,3000,3500);
DrawCoins();
CollisionTest(g_Camera.Position().x, g_Camera.Position().y, g_Camera.Position().z);
DrawEnemy();
DrawEnemy1();
//Draw SecondaryObjects models
DrawSecondaryObjects();
//Apply lighting effects
LightingEffects();
escapeAttempt();
if(hitbyenemy==true){
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE); // additive blending
float blendFactor = 1.0;
glColor3f(blendFactor ,0,0); // when blendFactor = 0, the quad won't be visible. When blendFactor=1, the scene will be bathed in redness
glBegin(GL_QUADS); // Draw A Quad
glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right
glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd();
}
ただし、これはゲーム内のすべてのオブジェクトを透明な色に変えるだけで、正方形はどこにも見えません。クワッドの配置もわかりません。私はopenGLに非常に慣れていません。
クワッドをレンダリングしようとせずにゲームがどのように見えるか:
試行後のゲームの外観:
ケビンのコードとglDisable(GL_DEPTH_TEST)
;
EDIT:コードを以下のペーストに変更しました..まだ画像1のように見えます.