OPenGL glEnable函数

glEnable是  OpenGl 函数。用于启用各种功能。具体功能由参数决定。与glDisable相对应。glDisable用以关闭各项功能。

参数说明

编辑
void glEnable(GLenum cap);
GLenum 说明参数应为 unsigned int 类型
cap 具体取值为 OpenGl所预设的常量。cap决定所要启用的功能。各种功能参见参数cap的取值表。 [1]  

代码示例

编辑
glEnable(GL_BLEND);//启用 色彩混合 [1]  

备注

编辑
使用glIsEnabled或者glGet来确定当前各项功能的开启情况。
glEnable不能写在 glBeginglEnd两个函数中间。
   [1]  

cap参数表

编辑
类型
说明
GL_ALPHA_TEST
4864
根据函数glAlphaFunc的条件要求来决定图形透明的层度是否显示。具体参见glAlphaFunc
GL_AUTO_NORMAL
3456
执行后,图形能把光反射到各个方向
GL_BLEND
3042
启用 颜色混合。例如实现半透明效果
GL_CLIP_PLANE0 ~ GL_CLIP_PLANE5
12288 ~ 12283
根据函数glClipPlane的条件要求
  启用图形切割管道。这里指六种缓存管道
GL_COLOR_LOGIC_OP
3058
启用每一像素的色彩为位 逻辑运算
GL_COLOR_MATERIAL
2930
执行后,图形(材料)将根据光线的照耀进行反射。
  反射要求由函数 glColorMaterial进行设定。
GL_CULL_FACE
2884
根据函数 glCullFace要求启用隐藏图形材料的面。
GL_DEPTH_TEST
2929
启用深度测试。
  根据坐标的远近自动隐藏被遮住的图形(材料)
GL_DITHER
3024
启用抖动
GL_FOG
2912
雾化效果
  例如距离越远越模糊
GL_INDEX_LOGIC_OP
3057
逻辑操作
GL_LIGHT0 ~ GL_LIGHT7
16384 ~ 16391
启用0号灯到7号灯(光源)
  光源要求由函数glLight函数来完成
GL_LIGHTING
2896
启用灯源
GL_LINE_SMOOTH
2848
执行后,过虑线段的锯齿
GL_LINE_STIPPLE
2852
执行后,画虚线
GL_LOGIC_OP
3057
逻辑操作
GL_MAP1_COLOR_4
3472
根据函数Map1对 贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成 RGBA曲线
GL_MAP1_INDEX
3473
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成颜色索引曲线
GL_MAP1_NORMAL
3474
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成 法线
GL_MAP1_TEXTURE_COORD_1
3475
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成文理坐标
GL_MAP1_TEXTURE_COORD_2
3476
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成文理坐标
GL_MAP1_TEXTURE_COORD_3
3477
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成文理坐标
GL_MAP1_TEXTURE_COORD_4
3478
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  生成文理坐标
GL_MAP1_VERTEX_3
3479
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  在三维空间里生成曲线
GL_MAP1_VERTEX_4
3480
根据函数Map1对贝赛尔曲线的设置,
  启用glEvalCoord1,glEvalMesh1,glEvalPoint1
  在 四维空间里生成 法线
GL_MAP2_COLOR_4
3504
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成 RGBA曲线
GL_MAP2_INDEX
3505
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成颜色索引
GL_MAP2_NORMAL
3506
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成 法线
GL_MAP2_TEXTURE_COORD_1
3507
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成纹理坐标
GL_MAP2_TEXTURE_COORD_2
3508
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成纹理坐标
GL_MAP2_TEXTURE_COORD_3
3509
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成纹理坐标
GL_MAP2_TEXTURE_COORD_4
3510
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  生成纹理坐标
GL_MAP2_VERTEX_3
3511
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  在三维空间里生成曲线
GL_MAP2_VERTEX_4
3512
根据函数Map2对贝赛尔曲线的设置,
  启用glEvalCoord2,glEvalMesh2,glEvalPoint2
  在 三维空间里生成曲线
GL_NORMALIZE
2977
根据函数glNormal的设置条件,启用 法向量
GL_POINT_SMOOTH
2832
执行后,过虑线点的锯齿
GL_POLYGON_OFFSET_FILL
32823
根据函数glPolygonOffset的设置,启用面的深度偏移
GL_POLYGON_OFFSET_LINE
10754
根据函数glPolygonOffset的设置,启用线的深度偏移
GL_POLYGON_OFFSET_POINT
10753
根据函数glPolygonOffset的设置,启用点的深度偏移
GL_POLYGON_SMOOTH
2881
过虑图形(多边形)的锯齿
GL_POLYGON_STIPPLE
2882
执行后,多边形为矢量画图
GL_SCISSOR_TEST
3089
根据函数glScissor设置,启用图形剪切
GL_STENCIL_TEST
2960
开启使用 模板测试并且更新模版缓存。参见 glStencilFuncglStencilOp.
GL_TEXTURE_1D
3552
启用一维文理
GL_TEXTURE_2D
3553
启用二维文理
GL_TEXTURE_GEN_Q
3171
根据函数glTexGen,启用纹理处理
GL_TEXTURE_GEN_R
3170
根据函数glTexGen,启用纹理处理
GL_TEXTURE_GEN_S
3168
根据函数glTexGen,启用纹理处理
GL_TEXTURE_GEN_T
3169
根据函数glTexGen,启用纹理处理

   [1]  

错误提示代码

编辑
可能出现错误代码的情况。
错误代码
出现错误的可能情况
GL_INVALID_ENUM
cap的值不是OpenGl所预设的值中的一个。.
GL_INVALID_OPERATION
glEnable在glBegin和glEnd之间被使用。

   [1]  

需求环境

编辑
Windows NT/2000:需要 Windows NT 3.5 或者更高。
  
Windows 95/98:需要 Windows 95 或者更高. 这一设置同样适用于 Windows 95。
  
头文件:在Gl.h文件中声明。
  
库:使用库 Opengl32.lib。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt中使用OpenGL的gl函数来绘制圆锥体,可以按照以下步骤进行: 1. 首先,需要设置OpenGL的环境,包括场景清除、深度测试、投影模式等。可以在绘制函数中添加如下代码: ``` void GLWidget::initializeGL() { glClearColor(0.0, 0.0, 0.0, 1.0); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); } ``` 2. 接下来,可以在绘制函数中使用gl函数来绘制圆锥体。可以使用多个三角形来表示圆锥体的侧面,并使用一个圆形来表示圆锥体的底面。可以通过循环来绘制多个三角形,并根据需要调整其顶点信息来实现不同大小和形状的圆锥体。示例代码如下: ``` void GLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // 绘制圆锥体的侧面 glBegin(GL_TRIANGLES); glColor3f(1.0, 0.0, 0.0); for(float angle = 0.0; angle < 360.0; angle += 10.0) { glVertex3f(0.0, 0.0, 0.0); glVertex3f(cos(angle * M_PI/180.0), sin(angle * M_PI/180.0), 1.0); glVertex3f(cos((angle + 10.0) * M_PI/180.0), sin((angle + 10.0) * M_PI/180.0), 1.0); } glEnd(); // 绘制圆锥体的底面 glBegin(GL_TRIANGLE_FAN); glColor3f(0.0, 1.0, 0.0); glVertex3f(0.0, 0.0, 0.0); for(float angle = 0.0; angle < 360.0; angle += 10.0) { glVertex3f(cos(angle * M_PI/180.0), sin(angle * M_PI/180.0), 0.0); } glEnd(); } ``` 3. 最后,可以在主窗口中调用OpenGL的初始化函数和绘制函数,来显示圆锥体。示例代码如下: ``` int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; GLWidget* glWidget = new GLWidget(&window); window.setCentralWidget(glWidget); window.resize(800, 600); window.show(); return app.exec(); } ``` 通过上述步骤,可以在Qt中使用OpenGL的gl函数来绘制圆锥体,并在主窗口中显示出来。需要注意的是,以上代码只是基本示例,实际中还可以根据需要进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值