Alpha alpha gl Alpha Func func value gl

  • Slides: 63
Download presentation

Alpha测试 �基于alpha值选择象素 �gl. Alpha. Func( func, value ) �gl. Enable( GL_ALPHA_TEST ); �在纹理映射时用alpha值作为蒙板

Alpha测试 �基于alpha值选择象素 �gl. Alpha. Func( func, value ) �gl. Enable( GL_ALPHA_TEST ); �在纹理映射时用alpha值作为蒙板

创建模板 � gl. Init. Display. Mode( …|GLUT_STENCIL|… ); � gl. Enable( GL_STENCIL_TEST ); �

创建模板 � gl. Init. Display. Mode( …|GLUT_STENCIL|… ); � gl. Enable( GL_STENCIL_TEST ); � gl. Clear. Stencil( 0 x 0 ); � gl. Stencil. Func( GL_ALWAYS, 0 x 1 ); � gl. Stencil. Op( GL_REPLACE, GL_REPLACE ); � 绘制蒙板

使用模板 � 当stencil = 1绘制物体 � gl. Stencil. Func( � 当stencil GL_EQUAL, 0 x

使用模板 � 当stencil = 1绘制物体 � gl. Stencil. Func( � 当stencil GL_EQUAL, 0 x 1 ) != 1绘制 ◦ gl. Stencil. Func( GL_NOTEQUAL, 0 x 1 ); ◦ gl. Stencil. Op( GL_KEEP, GL_KEEP );

反走样(Anti-aliasing) �消除锯齿状 gl. Enable( mode ) �GL_POINT_SMOOTH �GL_LINE_SMOOTH �GL_POLYGON_SMOOTH ◦ 象素的Alpha值由象素被覆盖 大小决定 ◦ 可以是RGBA或颜色索引模式

反走样(Anti-aliasing) �消除锯齿状 gl. Enable( mode ) �GL_POINT_SMOOTH �GL_LINE_SMOOTH �GL_POLYGON_SMOOTH ◦ 象素的Alpha值由象素被覆盖 大小决定 ◦ 可以是RGBA或颜色索引模式

显示列表 �创建显示列表 GLuint id; void init( void ) { id = gl. Gen. Lists(

显示列表 �创建显示列表 GLuint id; void init( void ) { id = gl. Gen. Lists( 1 ); gl. New. List( id, GL_COMPILE ); /* other Open. GL routines */ gl. End. List(); } �调用显示列表 void display( void ) { gl. Call. List( id ); }

显示列表层次 �考虑一个汽车模型 ◦ 创建底盘显示列表 ◦ 创建轮胎显示列表 gl. New. List( CAR, GL_COMPILE ); gl. Call.

显示列表层次 �考虑一个汽车模型 ◦ 创建底盘显示列表 ◦ 创建轮胎显示列表 gl. New. List( CAR, GL_COMPILE ); gl. Call. List( CHASSIS ); gl. Translatef( … ); gl. Call. List( WHEEL ); … gl. End. List();

保留模式 � 将顶点、颜色数组一次性送至显存处 理 gl. Vertex. Pointer( 3, GL_FLOAT, 0, coords ) gl. Color.

保留模式 � 将顶点、颜色数组一次性送至显存处 理 gl. Vertex. Pointer( 3, GL_FLOAT, 0, coords ) gl. Color. Pointer( 4, GL_FLOAT, 0, colors ) gl. Enable. Client. State( GL_VERTEX_ARRAY ) Color ) Vertex gl. Enable. Client. State( GL_COLOR_ARRAY data gl. Draw. Arrays( GL_TRIANGLE_STRIP, 0, num. Verts ); � 所有有效数组被用于绘制

Texture Mapping y z x 屏幕 几何 t 图像:即纹理 s

Texture Mapping y z x 屏幕 几何 t 图像:即纹理 s

纹理取址方式 �函数使用例子: gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_S, GL_CLAMP ) gl. Tex. Parameteri( GL_TEXTURE_2

纹理取址方式 �函数使用例子: gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_S, GL_CLAMP ) gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_T, GL_REPEAT )

纹理融合函数 �控制纹理是如何映射到物体上 ◦ gl. Tex. Env{fi}[v]( GL_TEXTURE_ENV, prop, param ) �GL_TEXTURE_ENV_MODE 模式: ◦ GL_MODULATE

纹理融合函数 �控制纹理是如何映射到物体上 ◦ gl. Tex. Env{fi}[v]( GL_TEXTURE_ENV, prop, param ) �GL_TEXTURE_ENV_MODE 模式: ◦ GL_MODULATE ◦ GL_BLEND ◦ GL_DECAL(GL_REPLACE) �设置混合颜色: GL_TEXTURE_ENV_COLOR Demo: MFCTex