OpenGL函数_ gl.glenable()详细介绍

glEnable 用于启用各种功能。功能由参数决定。与glDisable相对应。glDisable是用来关闭的。两个函数参数取值是一至的。
参数说明:
void glEnable(GLenum cap)
GLenum    是unsigned int 类型
cap             是一个取值。由值决定启用的功能键。各种功能请看参数cap的取值表

代码示例:
 000  glEnable(GL_BLEND);//启用色彩混合

说明:
glEnable不能写在glBegin和glEnd两个函数中间。

参数cap的取值
类型 说明
GL_ALPHA_TEST 4864 跟据函数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
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,启用纹理处理

  • 11
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
class MyGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { Q_OBJECT public: MyGLWidget(QWidget *parent = nullptr) : QOpenGLWidget(parent) {} void setImage(cv::Mat image) { m_image = image; update(); } void stopImage(bool) {} protected: protected: void initializeGL() override { initializeOpenGLFunctions(); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // 创建并绑定纹理 glGenTextures(1, &m_texture); glBindTexture(GL_TEXTURE_2D, m_texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } void resizeGL(int w, int h) override { glViewport(0, 0, w, h); } void paintGL() override { // 从VideoCapture对象中读取图像数据 makeCurrent(); // 设置当前OpenGL上下文 // 从VideoCapture对象中读取图像数据 // 将图像数据上传到纹理中 if (!m_image.empty()) { glBindTexture(GL_TEXTURE_2D, m_texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_image.cols, m_image.rows, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, m_image.data); } // 清除帧缓冲区 glClear(GL_COLOR_BUFFER_BIT); // 渲染纹理 if (!m_image.empty()) { glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, -1.0f, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, 1.0f, 0.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 0.0f); glEnd(); glDisable(GL_TEXTURE_2D); } } private: cv::Mat m_image; GLuint m_texture{}; }; glClear(GL_COLOR_BUFFER_BIT);此处崩溃,分析原因并修改
最新发布
06-13

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值