2012-04-03 155 views
0

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

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

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

+0

[SSCCE](http://sscce.org/) – genpfault 2012-04-03 16:32:23

+0

我正在使用C++进行此实现。请让我知道,如果opengl支持我在找... – user1302064 2012-04-03 16:49:29

回答

1

如果您已启用深度测试,如果突出显示的绘制不是第一个,则可能会因为它对z缓冲区的深度测试失败而被拒绝。也可能是因为您没有清除深度缓冲区?如果您不想关闭深度测试(例如避免状态切换),则可以将高亮点的z更靠近,以便通过深度测试。

另外,您确定if条件通过吗?如果是这样,作为一个完整的检查,你可以在一些空的空间中稍微移动/偏移(x,y),以确保它实际上正在进入该块。

它可能只是另一个蓝点可以绘制在上面。你将不得不张贴更多的代码来显示你在做什么。

+0

是的,我相信它进入条件块。我已经通过在块内打印出来进行了测试。所有点都以蓝色绘制。然后第二次调用该函数,进入if循环,颜色变为蓝色,并在闪回时变回绿色。 – user1302064 2012-04-03 17:50:24

+0

你的意思是它变成绿色然后回到蓝色?这可能表明它正在工作,但条件只是在很短的时间内(可能只是1帧),在这种情况下,您需要延长高光持续时间,因此它是显而易见的 – 2012-04-03 18:02:02

+0

感谢Preet为您所有宝贵的意见..它现在有效.. – user1302064 2012-04-04 01:18:23

相关问题