社区
图形处理/算法
帖子详情
如何用OpenGL给一个圆填充颜色
shibushiburangzhucu
2008-12-24 11:06:50
如何用OpenGL给一个圆填充颜色啊
颜色要渐变的那种(和光盘差不多的,RGB三色向中心渐变的)
...全文
1944
12
打赏
收藏
如何用OpenGL给一个圆填充颜色
如何用OpenGL给一个圆填充颜色啊 颜色要渐变的那种(和光盘差不多的,RGB三色向中心渐变的)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shibushiburangzhucu
2008-12-25
打赏
举报
回复
问题我已经解决,就是要给产生的每一个顶点都赋上颜色
颜色的计算 采用HSI色空间 来计算产生的每一个顶点的颜色值
这样就能产生出我5楼发出的图片的效果
zzz822163
2008-12-24
打赏
举报
回复
glShadeModel(GL_SMOOTH);
glBegin(GL_TRIANGLE_FAN);//
glVertex3f(0,0,0.0f );
for(int i=0;i<=390;i+=10)
{float p=(float)(i*3.14/180);
if(i%3==0)
glColor3f(1.0f,0.0f,0.0f);
else if(i%3==1)
glColor3f(0.0f,1.0f,0.0f);
else if(i%3==2)
glColor3f(0.0f,0.0f,1.0f);
glVertex3f((float)sin(p),(float)cos(p),0.0f );
}
glEnd();
需要#include <math.h>
zhyinty
2008-12-24
打赏
举报
回复
我觉得你应该用着色器来写,或者给外围的顶点指定一种颜色,然后给圆心指定一种颜色,OpenGL会进行插值
运算,最后得到的颜色就是渐变的...
fandh
2008-12-24
打赏
举报
回复
http://www.pudn.com/downloads97/sourcecode/graph/detail396546.html
这个有例子,你看看是否对你有用!
shibushiburangzhucu
2008-12-24
打赏
举报
回复
[Quote=引用 10 楼 zzz822163 的回复:]
三种颜色相邻的地方已经出现了渐变的效果呀,opengl是会自己计算颜色插值的,
如果觉得效果不好,可以使用颜色渐变的纹理图
[/Quote]
三种颜色相邻的地方效果是出来了 但是那是很小很小的一部分出来了
跟我5搂发的图片效果完全不一样啊
zzz822163
2008-12-24
打赏
举报
回复
三种颜色相邻的地方已经出现了渐变的效果呀,opengl是会自己计算颜色插值的,
如果觉得效果不好,可以使用颜色渐变的纹理图
shibushiburangzhucu
2008-12-24
打赏
举报
回复
[Quote=引用 8 楼 zzz822163 的回复:]
最前面要加上glShadeModel(GL_SMOOTH);
[/Quote]
我加了 你那样做的循环
for(int i=0;i <=390;i+=10)
{float p=(float)(i*3.14/180);
if(i <130)
glColor3f(1.0f,0.0f,0.0f);
else if(i <260)
glColor3f(0.0f,1.0f,0.0f);
else
glColor3f(0.0f,0.0f,1.0f);
虽然你为这三个特定的顶点赋了新的颜色,但是在他们之后每一次产生的顶点都添加了相同的颜色的啊
例如if(i <130)
glColor3f(1.0f,0.0f,0.0f);
这样按照你的循环 他循环了13次 产生了13个颜色一样的顶点
所以他不会出现渐变的效果
我就是不会做这种渐变的效果。。
zzz822163
2008-12-24
打赏
举报
回复
最前面要加上glShadeModel(GL_SMOOTH);
shibushiburangzhucu
2008-12-24
打赏
举报
回复
[Quote=引用 6 楼 zzz822163 的回复:]
glBegin(GL_TRIANGLE_FAN);//
glVertex3f(0,0,0.0f );
for(int i=0;i <=390;i+=10)
{float p=(float)(i*3.14/180);
if(i <130)
glColor3f(1.0f,0.0f,0.0f);
else if(i <260)
glColor3f(0.0f,1.0f,0.0f);
else
glColor3f(0.0f,0.0f,1.0f);
glVertex3f((float)sin(p),(float)cos(p),0.0f );
}
glEnd();
这个行不行?
[/Quote]
这个不行 颜色不渐变 只是分成了三块颜色区域
zzz822163
2008-12-24
打赏
举报
回复
glBegin(GL_TRIANGLE_FAN);//
glVertex3f(0,0,0.0f );
for(int i=0;i<=390;i+=10)
{float p=(float)(i*3.14/180);
if(i<130)
glColor3f(1.0f,0.0f,0.0f);
else if(i<260)
glColor3f(0.0f,1.0f,0.0f);
else
glColor3f(0.0f,0.0f,1.0f);
glVertex3f((float)sin(p),(float)cos(p),0.0f );
}
glEnd();
这个行不行?
shibushiburangzhucu
2008-12-24
打赏
举报
回复
是要这种样式的
shibushiburangzhucu
2008-12-24
打赏
举报
回复
[Quote=引用 3 楼 zzz822163 的回复:]
glShadeModel(GL_SMOOTH);
glBegin(GL_TRIANGLE_FAN);//
glVertex3f(0,0,0.0f );
for(int i=0;i <=390;i+=10)
{float p=(float)(i*3.14/180);
if(i%3==0)
glColor3f(1.0f,0.0f,0.0f);
else if(i%3==1)
glColor3f(0.0f,1.0f,0.0f);
else if(i%3==2)
glColor3f(0.0f,0.0f,1.0f);
glVertex3f((float)sin(p),(float)cos(p),0.0f );
}
glEnd();
需要#include <math.h>
[/Quote]
可能是我表达没表达清楚 不是要产生这么多次的 R G B颜色
一个圆就只有R G B一次 这三种颜色平均分布在一个圆内 三种颜色相邻的地方出现渐变的效果
实验2
圆
形和椭
圆
的生成
用Bresenham算法实现椭
圆
或
圆
的绘制。
【
OpenGL
C++】画
一个
空心汉字和
一个
圆
,并
填充
汉字(中点画线法,中点画
圆
法,种子
填充
法)
内容:画
一个
空心汉字和
一个
圆
设计
一个
画任意直线和
圆
的算法,可选所学的任一图形扫描转换算法(中点或bresenham算法),不能使用任何画线/画
圆
的API; 使用画线算法实现空心汉字的绘制,汉字必须为4划以上; 使用你设计的画
圆
算法绘制这个空心字的外接
圆
; 设计一种
填充
算法实现汉字的
填充
; 1.中点画
圆
法 生成八分之一
圆
,其他部分可以通过一系列的简单反射变换得到。 (1)已知
圆
心在原点的
圆
上的一点的(x,y),函数circlePlotPoint() 根据对称性得到8个对称点,分别为(y,x),(y,-x),
opengl
实现直线扫描算法和区域
填充
算法
1、 采用直线扫描算法绘制一条线段,直线由离散点组成 2、 利用区域
填充
算法绘制多边形区域,区域由离散点组成
计算机图形学06:中点Bresenham画
圆
(并
填充
边界,例如:边界用红色,内部用绿色
填充
)
计算机图形学之中点Bresenham画
圆
(并
填充
边界,例如:边界用红色,内部用绿色
填充
)——附原理及详细代码
OpenGL
绘制
圆
弧/
圆
/饼图 2
OpenGL
绘制
圆
弧/
圆
/饼图 2//rorger,2011 //contact me: jhcyd112@163.com //in this new version, we can both draw a arc/circle/pi with color filled or not. #include "windows.h" #include "glut.h" #include "math.h" #define width 640 #define height 480 voi
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章