1
Szkółka / Odp: [C++] Export danych mesha 3d do tablicy
« dnia: Styczeń 02, 2018, 09:36:17 »
Obydwa podejścia są dobre.
Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
glBegin(GL_QUADS);
glTexCoord2f(0.0 + rand()%400, 0.0 + rand()%400); glVertex3f(-15.0, -15.0, 0.0);
glTexCoord2f(0.0 + rand()%400, 1.0 + rand()%400); glVertex3f(-15.0, 15.0, 0.0);
glTexCoord2f(1.0 + rand()%400, 1.0 + rand()%400); glVertex3f(15.0, 15.0, 0.0);
glTexCoord2f(1.0 + rand()%400, 0.0 + rand()%400); glVertex3f(15.0, -15.0, 0.0);
glEnd();
int DrawGLScene(GLvoid)
{
int rowNumber = Music_GetPosition();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
...
tu jest dalsza część kodu
if ((rowNumber >= 0) && (rowNumber <=127))
{
drawFigure1();
if (rowNumber % 8 == 0)
{
whiteFlash();
}
}
if ((rowNumber >= 129) && (rowNumber <=256))
{
drawFigure2();
if (rowNumber % 8 == 0)
{
whiteFlash();
}
}
if ((rowNumber >= 0) && (rowNumber <=127))
{
drawFigure1();
}
if (rowNumber == 128)
whiteFlash();
if ((rowNumber >= 129) && (rowNumber <=256))
{
drawFigure2();
}
void whiteFlash()
{
glLoadIdentity();
glTranslatef (0.0f, 0.0f, -5.0f);
glPolygonMode(GL_FRONT, GL_FILL);
glPolygonMode(GL_BACK, GL_FILL);
glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE);
if (alpha <= 1)
{
glColor4f(1.0, 1.0, 1.0, alpha);
glBegin(GL_QUADS);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();
alpha += 0.025;
}
else
{
glColor4f(1.0, 1.0, 1.0, alpha_inv);
glBegin(GL_QUADS);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();
alpha_inv -= 0.025;
}
glDisable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
return;
}
if (rowNumber % 8 == 0 ||
rowNumber % 8 == 2 ||
rowNumber % 8 == 3 ||
rowNumber % 8 == 4 ||
rowNumber % 8 == 5 ||
rowNumber % 8 == 6 ||
rowNumber % 8 == 7 ||
rowNumber % 8 == 8)
{
whiteFlash();
}
Można jakoś tą rozbudowaną logikę sprawdzającą w nawiasie uprościć i zastąpić bardziej czytelnym kodem? Muzyka ma paręset wierszy w pattermach i oprogramowanie synchronizacji białego błysku do tych wierszy zajmie bardzo dużo sprawdzających warunków logicznych:)if ((rowNumber >= 0) && (rowNumber <=127))
{
drawFigure1();
}
if (rowNumber == 128)
whiteFlash();
if ((rowNumber >= 129) && (rowNumber <=256))
{
drawFigure2();
}
void whiteFlash()
{
glLoadIdentity();
glTranslatef (0.0f, 0.0f, -5.0f);
glPolygonMode(GL_FRONT, GL_FILL);
glPolygonMode(GL_BACK, GL_FILL);
glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE);
if (alpha <= 1)
{
glColor4f(1.0, 1.0, 1.0, alpha);
glBegin(GL_QUADS);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();
alpha += 0.025;
}
else
{
glColor4f(1.0, 1.0, 1.0, alpha_inv);
glBegin(GL_QUADS);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();
alpha_inv -= 0.025;
}
glDisable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
return;
}