关于opengl颜色改变问题!!求高手指教!!!

时间:2020-12-27 23:30:17
内容如下:我通过OpenGL画了一个四边形,我想让这个四边形的颜色随着循环不停的改变,并且每次改变之后的颜色都要在在屏幕上显示出来,怎么实现啊?他现在只显示循环做到最后的颜色!!!

12 个解决方案

#1


没人知道么?高手指教一下

#2


是不是没刷新?可以用 Invalidate();

#3




have a try

"SetTimer()"

#4


我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

#5


SwapBuffers(wglGetCurrentDC());

#6


我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

-------------
对的,但是每次while循环都得调一次glColor3f设置顶点颜色

#7


SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
  if(i==0)
 {
   a=0.0;
   b=1.0;
   c=0.0;
  if(i==1)
 {
   a=1.0;
   b=0.0;
   c=0.0;
 }
  if(i==2)
 {
   a=0.0;
   b=0.0;
   c=1.0;
  }
glBeign(glQuad)
glColor3f(a,b,c)
......
glEnd
}
这样不就是可以让这个四边形的颜色不停的改变么???
但他现在只是显示最后的蓝色,红色和绿色都不显示,是循环做的太快了么》??????

#8


做一个时钟消息
再时钟消息里改变绘制参数

#9


刷新就是在a,b,c的値改变后调用Invalidate函数。
引用 4 楼 barbie521 的回复:
我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

#10


你怎么用for循环??这样怎么看得见?至少应该用定时器吧。
引用 7 楼 barbie521 的回复:
SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
  if(i==0)
 {
  a=0.0;
  b=1.0……

#11


引用 7 楼 barbie521 的回复:
SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
  if(i==0)
 {
  a=0.0;
  b=1.0……


循环太快了,,要不你在里面加上一个延时语句

#12


不能用循环 ,用静态变量定义i,
i++,判断i%3

#1


没人知道么?高手指教一下

#2


是不是没刷新?可以用 Invalidate();

#3




have a try

"SetTimer()"

#4


我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

#5


SwapBuffers(wglGetCurrentDC());

#6


我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

-------------
对的,但是每次while循环都得调一次glColor3f设置顶点颜色

#7


SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
  if(i==0)
 {
   a=0.0;
   b=1.0;
   c=0.0;
  if(i==1)
 {
   a=1.0;
   b=0.0;
   c=0.0;
 }
  if(i==2)
 {
   a=0.0;
   b=0.0;
   c=1.0;
  }
glBeign(glQuad)
glColor3f(a,b,c)
......
glEnd
}
这样不就是可以让这个四边形的颜色不停的改变么???
但他现在只是显示最后的蓝色,红色和绿色都不显示,是循环做的太快了么》??????

#8


做一个时钟消息
再时钟消息里改变绘制参数

#9


刷新就是在a,b,c的値改变后调用Invalidate函数。
引用 4 楼 barbie521 的回复:
我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

#10


你怎么用for循环??这样怎么看得见?至少应该用定时器吧。
引用 7 楼 barbie521 的回复:
SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
  if(i==0)
 {
  a=0.0;
  b=1.0……

#11


引用 7 楼 barbie521 的回复:
SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
  if(i==0)
 {
  a=0.0;
  b=1.0……


循环太快了,,要不你在里面加上一个延时语句

#12


不能用循环 ,用静态变量定义i,
i++,判断i%3