// Draw Particles void drawScene( ) { int i, j; float x, y, z; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glRotatef(pan, 0.0, 1.0, 0.0); glRotatef(tilt, 1.0, 0.0, 0.0); // GROUND?! glColor3f(r, g, b); glBegin(GL_QUADS); // along z - y const for (i = -10; i+1 < 11; i++) { // along x - y const for (j = -10; j+1 < 11; j++) { glColor3fv(ground_colors[i+10][j+10]); glVertex3f(ground_points[j+10][i+10][0], ground_points[j+10][i+10][1], ground_points[j+10][i+10][2] + zoom); glColor3fv(ground_colors[i+10][j+1+10]); glVertex3f(ground_points[j+1+10][i+10][0], ground_points[j+1+10][i+10][1], ground_points[j+1+10][i+10][2] + zoom); glColor3fv(ground_colors[i+1+10][j+1+10]); glVertex3f(ground_points[j+1+10][i+1+10][0], ground_points[j+1+10][i+1+10][1], ground_points[j+1+10][i+1+10][2] + zoom); glColor3fv(ground_colors[i+1+10][j+10]); glVertex3f(ground_points[j+10][i+1+10][0], ground_points[j+10][i+1+10][1], ground_points[j+10][i+1+10][2] + zoom); } } glEnd(); // Which Particles if (fall == RAIN) { drawRain(); }else if (fall == HAIL) { drawHail(); }else if (fall == SNOW) { drawSnow(); } glutSwapBuffers(); }
void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // „Ƕ„Ç£„É≥„Éâ„Ƕ„ÅÆËÉåÊôØ„Çí°ó„Çä„ŧ„Å∂„Å? & Èö†Èù¢Âá¶ÁêÅEÇíÂèØËÉΩ„Å´„Åô„Çã glEnable(GL_DEPTH_TEST); // Èö†Èù¢Âá¶ÁêÅEñãÂß? glEnable(GL_NORMALIZE); glEnable(GL_LIGHTING); glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); glPushMatrix(); glTranslatef(0.0, 1.0, 0.0); polarview(); // „Éù„ÅE„É©„ɺ„Éì„É•„ɺ„Å∏„ÅÆ„Éì„É•„ɺ„ǧ„É≥„Ç∞§âÊèõ glPushMatrix(); glLightfv(GL_LIGHT0, GL_POSITION, light0); glPopMatrix(); shading(5); drawGround2D(); shading(6); glDisable(GL_LIGHTING); drawGrass(); glEnable(GL_LIGHTING); shading(5); drawPlant(); if (rainFlag == GL_TRUE) drawRain(); glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); drawCloud(); if (thunderFlag == GL_TRUE && rainFlag == GL_TRUE) { if (lightningnum == 0 || lightningnum == 4) lightning(); lightningnum++; if (lightningnum == 5) { lightningnum = 0; thunderFlag = GL_FALSE; } if (rand() % 10 == 4) fallFlag = GL_TRUE; } else thunderFlag = GL_FALSE; glPopMatrix(); glutSwapBuffers(); }
/* * 描画処理 */ static void ToHeartRainEffect(Lvns *lvns) { int i; static u_char rain_pal[RAIN_PAL_SIZE][3] = { {143, 199, 255}, {159, 207, 255}, {175, 215, 255}, {191, 223, 255}, {207, 231, 255}, {223, 239, 255}, {239, 247, 255}, {255, 255, 255} }; lvnsimage_copy_palette(lvns->background, lvns->vram); /* 背景 */ lvnsimage_copy(lvns->background, lvns->vram); /* 背面の雨 */ for (i = 0; i < rain_num; i++) { if (rain[i].pos == RAIN_BACK) drawRain(lvns, i); } /* キャラクタ立ち絵を追加 */ LVNS->mergeCharacter(lvns); /* 前面の雨 */ for (i = 0; i < rain_num; i++) { if (rain[i].pos == RAIN_FRONT) drawRain(lvns, i); } /* 雨用パレット追加 */ lvnsimage_set_palette3(lvns->vram, rain_pal, TOHEART_COL_SAKURA, RAIN_PAL_SIZE); lvns->vram->palette_num = TOHEART_COL_SAKURA + RAIN_PAL_SIZE; }