Opengl1.1绘图之GL_COLOR_LOGIC_OP

Posted 小哈龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opengl1.1绘图之GL_COLOR_LOGIC_OP相关的知识,希望对你有一定的参考价值。

一.GL_COLOR_LOGIC_OP简介

关于1.1版本的Opengl,可以直接在MSDN查阅,如下:

 如果启用,则将当前逻辑操作应用于传入的 RGBA 颜色和颜色缓冲区值。

如果在绘图时启用该选项,则当前绘图颜色索引会与帧缓存区中的对应位置的颜色索引做逻辑运算,即像素颜色值之间的逻辑运算,根据指定的逻辑运算将当前颜色索引值与帧缓冲区中的对应位置的颜色索引值做逻辑运算后生成新的颜色索引值,这个新的颜色索引值既是最终保存在帧缓存区中的颜色索引值,然后将帧缓冲区刷新到界面显示。

二. GL_COLOR_LOGIC_OP基本使用 

注意:在glBegin与glEnd之间不能调用glLogicOp函数,会出现GL _ IN VALID_ OPERATlON错误

//启用颜色索引值逻辑操作
glEnable(GL_COLOR_LOGIC_OP);
//设定颜色索引值之间的逻辑运算方式(GL_COPY是使用新的颜色覆盖当前已经存储在缓存区中颜色)
glLogicOp(GL_COPY);
//指定当前绘制图元的颜色值
glColor3f(0.0f,0.0f,255.0f);
//绘制需要的图元(绘制完后会存储在帧缓存区中)
Draw();
//关闭颜色索引值逻辑操作
glDisable(GL_COLOR_LOGIC_OP);

三.glLogicOp函数

glLogicOp函数的参数为指定逻辑运算的方式,具体含义待补充,如下:

ValueMeaning含义

GL_CLEAR

0

GL_SET

1

GL_COPY

s默认模式,使用当前颜色值

GL_COPY_INVERTED

!s

GL_NOOP

d

GL_INVERT

!d

GL_AND

s & d

GL_NAND

!(s & d)

GL_OR

s | d

GL_NOR

!(s | d)

GL_XOR

s ^ d异或操作,使用当前颜色值与缓存区中的颜色值做异或运算后为结果颜色值

GL_EQUIV

!(s ^ d)

GL_AND_REVERSE

s & !d

GL_AND_INVERTED

!s & d

GL_OR_REVERSE

s | !d

GL_OR_INVERTED

!s | d

以上是关于Opengl1.1绘图之GL_COLOR_LOGIC_OP的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL3中的虚线?

OpenGL版本与OpenGL扩展机制

OpenGL 1.1:调用 glNormalPointer() 后可以释放内存吗?

Blender源码分析之OpenGL基本例子

安装PCL(编译方式安装,填平之前的坑)

Blender源码分析之OpenGL基本例子