使用opengl使用不同颜色高亮显示点

使用opengl使用不同颜色高亮显示点,opengl,Opengl,我使用glVertex3f()以特定颜色绘制了一系列点。现在,当用户单击一个点时,我需要以不同的颜色显示相关点,而其他点保持旧颜色。尝试使用下面提到的条件,但颜色保持不变,这是先设置的。有没有办法用不同的颜色绘制点 if((highlightColor)&&(i==0)){ glColor3f(0,1,0); glVertex3f(tempx,calcy,

我使用glVertex3f()以特定颜色绘制了一系列点。现在,当用户单击一个点时,我需要以不同的颜色显示相关点,而其他点保持旧颜色。尝试使用下面提到的条件,但颜色保持不变,这是先设置的。有没有办法用不同的颜色绘制点

   if((highlightColor)&&(i==0)){                      
         glColor3f(0,1,0);                    
         glVertex3f(tempx,calcy,0);
   } else{
         glColor3f(0,0,1);       
         glVertex3f(tempx,calcy,0);
   }   

最初,所有点都是蓝色的。然后我将变量highlightColor设置为true,如果我想用不同的颜色高亮显示某些点,并再次调用此方法。颜色不会变为绿色。有人能告诉我哪里出错了吗?

如果启用了深度测试,如果高亮显示的绘图不是第一个,它可能会被拒绝,因为它将无法通过对z缓冲区的深度测试。也可能是您没有清除深度缓冲区?如果不想关闭深度测试(例如,为了避免状态切换),则可以将高亮显示点的z移近,使其通过深度测试

另外,您是否确定
if
条件完全通过?如果是这样的话,作为一种健全性检查,您可以在一些空白空间中绘制稍微移位/偏移的(x,y),以确保它实际上正在进入该块


它可能只是在它上面画另一个蓝点。你必须发布更多代码来显示你在做什么。< / P>我正在使用C++来实现。请让我知道opengl是否支持我正在寻找的…是的,我确信它进入了条件块。我通过在块内打印来测试这一点。首先以蓝色绘制所有点。然后第二次调用函数,进入if循环,颜色变为蓝色,并在一瞬间变回绿色。你是说它变为绿色,然后变回蓝色吗?这可能表明它正在工作,但该条件仅在很短的时间内(可能仅为1帧)为真,在这种情况下,您需要延长高亮显示的持续时间,以使其可见