我正在玩同步显示两个不同纹理在音乐变化的四分之一行(位置)上的能力。音乐采用跟踪器格式。它由包含行的模式组成。跟踪器的API返回当前正在播放的行(行)。我需要在四边形上仅显示一次第一个纹理,而在行(位置)变化时仅接下来一次显示第二个纹理。在DrawGLScene()
中,drawNoise()
函数始终在每次迭代中调用。一行音乐需要0.09秒。 intPosCurrVal
变量在这0.09秒内具有相同的值。因此,功能drawNoise()
对于相同的intPosCurrVal
值被调用很多次,时间间隔为0.09秒。下一行音乐播放时,intPosCurrVal
变量会递增。我想仅为intPosCurrVal
变量的相同值调用drawNoise()
一次。换言之,在主绘图功能,这就是所谓的所有时间,我想仅一次函数作为drawNoise()
的intPosCurrVal
变量的值增加1。执行功能只有一次
主要绘图功能调用:
int DrawGLScene(GLvoid)
{
int posCurrVal = Music_GetPosition();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
drawNoise(intPosCurrVal);
// some other code
glFlush();
return TRUE;
}
drawNoise
功能:
void drawNoise(int x)
{
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
if(x > prev)
{
glBindTexture(GL_TEXTURE_2D, texPosNoise);
prev = x;
}
else
{
glBindTexture(GL_TEXTURE_2D, texNegNoise);
}
glBegin(GL_QUADS);
glColor3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0, 0.0); glVertex3f(- 15.0, - 15.0, 0.0);
glTexCoord2f(0.0, 1.0); glVertex3f(- 15.0, 15.0, 0.0);
glTexCoord2f(1.0, 1.0); glVertex3f(15.0, 15.0, 0.0);
glTexCoord2f(1.0, 0.0); glVertex3f(15.0, - 15.0, 0.0);
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
}
预先感谢您
保存'posCurrVal',当保存的值不同于'posCurrVal'时,只调用'drawNoise'。 –