opengl 指定着色模型
来源:互联网 发布:log4j配置sql语句 编辑:程序博客网 时间:2024/06/05 06:39
OpenGL允许为同一多边形的不同顶点指定不同的颜色。例如:
#include <math.h>
const GLdouble Pi = 3.1415926536;
void myDisplay(void)
{
int i;
// glShadeModel(GL_FLAT);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex2f(0.0f, 0.0f);
for(i=0; i<=8; ++i)
{
glColor3f(i&0x04, i&0x02, i&0x01);
glVertex2f(cos(i*Pi/4), sin(i*Pi/4));
}
glEnd();
glFlush();
}
在默认情况下,OpenGL会计算两点顶点之间的其它点,并为它们填上“合适”的颜色,使相邻的点的颜色值都比较接近。如果使用的是RGB模式,看起来就具有渐变的效果。如果是使用颜色索引模式,则其相邻点的索引值是接近的,如果将颜色表中接近的项设置成接近的颜色,则看起来也是渐变的效果。但如果颜色表中接近的项颜色却差距很大,则看起来可能是很奇怪的效果。
使用glShadeModel函数可以关闭这种计算,如果顶点的颜色不同,则将顶点之间的其它点全部设置为与某一个点相同。(直线以后指定的点的颜色为准,而多边形将以任意顶点的颜色为准,由实现决定。)为了避免这个不确定性,尽量在多边形中使用同一种颜色。
glShadeModel的使用方法:
glShadeModel(GL_SMOOTH); // 平滑方式,这也是默认方式
glShadeModel(GL_FLAT); // 单色方式
#include <math.h>
const GLdouble Pi = 3.1415926536;
void myDisplay(void)
{
int i;
// glShadeModel(GL_FLAT);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex2f(0.0f, 0.0f);
for(i=0; i<=8; ++i)
{
glColor3f(i&0x04, i&0x02, i&0x01);
glVertex2f(cos(i*Pi/4), sin(i*Pi/4));
}
glEnd();
glFlush();
}
在默认情况下,OpenGL会计算两点顶点之间的其它点,并为它们填上“合适”的颜色,使相邻的点的颜色值都比较接近。如果使用的是RGB模式,看起来就具有渐变的效果。如果是使用颜色索引模式,则其相邻点的索引值是接近的,如果将颜色表中接近的项设置成接近的颜色,则看起来也是渐变的效果。但如果颜色表中接近的项颜色却差距很大,则看起来可能是很奇怪的效果。
使用glShadeModel函数可以关闭这种计算,如果顶点的颜色不同,则将顶点之间的其它点全部设置为与某一个点相同。(直线以后指定的点的颜色为准,而多边形将以任意顶点的颜色为准,由实现决定。)为了避免这个不确定性,尽量在多边形中使用同一种颜色。
glShadeModel的使用方法:
glShadeModel(GL_SMOOTH); // 平滑方式,这也是默认方式
glShadeModel(GL_FLAT); // 单色方式
- opengl 指定着色模型
- 【OpenGL】指定着色模型代码
- opengl学习笔记之指定着色模型
- openGL指定着色模式
- 《高效学习OpenGL》 之 指定颜色和着色模型 glClampColor(),glIndexf(),glClearIndex(),glShadeModel()
- OpenGL 着色
- OpenGL着色
- 探究OpenGL光照模型的着色器实现
- OpenGL着色器与Phong光照明模型
- OpenGl定点着色
- openGL混合渐变着色
- OpenGL ES着色语言
- OpenGL 着色器语言
- OpenGL ADSGouraud着色
- OpenGL ADSPhong着色
- opengl着色步骤
- OpenGL着色语言GLSL
- OpenGL着色器语言
- 《环球企业家》Online-中国商业领袖的首页
- 【opencv】IplImage详细说明以及访问每个元素的方法
- 页面表单提交的原理
- java中的随机数Random
- SQL Server 2005无法远程连接的解决方法
- opengl 指定着色模型
- varnish 400 503错误的原因及解决方法 我们在生产环境中尝试使用varnish替代squid的主要原因: 1. squid不支持多核cpu, 生产环境中大多使用Dell R61
- MFC消息机制初级心得
- Apache组件commons的MultiHashMap的一对多集合用法
- MFC调用DOS窗口显示信息
- boost库在工作(22)任务之二
- JavaScript继承详解
- android3 WebView有声音无画面问题
- 被忽略却很有用的html标签