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

Barbie521 2011-05-20 09:32:37
内容如下:我通过OpenGL画了一个四边形,我想让这个四边形的颜色随着循环不停的改变,并且每次改变之后的颜色都要在在屏幕上显示出来,怎么实现啊?他现在只显示循环做到最后的颜色!!!
...全文
614 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinglonng 2012-07-28
  • 打赏
  • 举报
回复
不能用循环 ,用静态变量定义i,
i++,判断i%3
向立天 2011-05-21
  • 打赏
  • 举报
回复
做一个时钟消息
再时钟消息里改变绘制参数
Barbie521 2011-05-21
  • 打赏
  • 举报
回复
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
}
这样不就是可以让这个四边形的颜色不停的改变么???
但他现在只是显示最后的蓝色,红色和绿色都不显示,是循环做的太快了么》??????
lizelglg2hao 2011-05-21
  • 打赏
  • 举报
回复
我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???

-------------
对的,但是每次while循环都得调一次glColor3f设置顶点颜色
天鹅梦 2011-05-21
  • 打赏
  • 举报
回复
SwapBuffers(wglGetCurrentDC());
Barbie521 2011-05-21
  • 打赏
  • 举报
回复
我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???
little_angel 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 barbie521 的回复:]
SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


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

循环太快了,,要不你在里面加上一个延时语句
buyong 2011-05-21
  • 打赏
  • 举报
回复
你怎么用for循环??这样怎么看得见?至少应该用定时器吧。
[Quote=引用 7 楼 barbie521 的回复:]
SwapBuffers(wglGetCurrentDC());这个不是设置双缓冲区么??我已经设置了!!


我是每次循环都调用了glColor3f设置颜色,因为glColor3f()里的三个参数是随着循环变的啊!但是他现在屏幕上只显示循环做到最后的颜色,中间的颜色都不 显示例如
for(i==0;i<3;i++)
{
if(i==0)
{
a=0.0;
b=1.0……
[/Quote]
buyong 2011-05-21
  • 打赏
  • 举报
回复
刷新就是在a,b,c的値改变后调用Invalidate函数。
[Quote=引用 4 楼 barbie521 的回复:]
我也弄不清楚具体是怎么回事,怎么让他改变颜色之后刷新屏幕啊?
glcolorf(R,G,B)R,G,B三个参数我设成了变量,a,b,c ,让a,b,c的値不停的改变不就实现了四边形的颜色改变,这种做法对不???
[/Quote]
「已注销」 2011-05-20
  • 打赏
  • 举报
回复


have a try

"SetTimer()"

buyong 2011-05-20
  • 打赏
  • 举报
回复
是不是没刷新?可以用 Invalidate();
Barbie521 2011-05-20
  • 打赏
  • 举报
回复
没人知道么?高手指教一下

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧