OpenGL入门学习笔记02

多边形

1,多边形的两面和绘制

这是一个三维的概念,一个多边形有正面和反面,我们可以设置正面和反面的绘制方式

glPolygonMode(GL_FRONT,GL_POINT)  正面,只绘制顶点

GL_BACK  反面 GL_FRONT_AND_BACK正面和反面

GL_FILL填充的绘制方式 GL_LINE绘制边缘的线

2,反转

多边形有正面和反面,比如默认逆时针绘制的为正面,在一张透明纸上逆时针画一个矩形,那么面对我们的画的这个面就是正面,反过来的那个面就是反面,我们可以改变正面和反面的概念,把顺时针的变成正面。

glFrontFace(GL_CCW) 逆时针正面,CCW即counterclockwise

glFrontFace(GL_CW)  顺时针正面,CW即clockwise

3,剔除多边形表面

glEnable(GL_CULL_FACE) 开启剔除    glDisable(GL_CULL_FACE)关闭剔除

glCullFace(GL_FRONT)   剔除正面    GL_BACK反面   GL_FRONT_AND_BACK 正面和反面

4,镂空多边形

glEnable(GL_POLYGON_STIPPLE) 开启镂空

glPolygonStipple(Mask)  Mask是一个128指向128字节的空间,表示32*32的矩形该如何镂空,顺序是从左下开始,1表示不镂空,0表示镂空。

void myDisplay(void)

{

GLuByte* Mask[128] = {

0x00,0x11,0x00,0x11,

//一共128个值

0x00,0x11,0x00,0x11,

};

glClear(GL_COLOR_BUFFER_BIT);

glEnable(GL_POLYGON_STIPPLE);

glPolygonStipple(Mask);

glRectf(-0.5f,-0.5f,0.5f,0.5f);

glFlush();

}

Mask也可以用画图工具,编辑一个32*32的图片,然后保存为单色位图Mask.bmp,然后读出里面的数据再使用就可以了

#include <stdio.h>

File* fb = fopen("Mask.bmp","rb");

if (!fb)

exit(0);

if (fseek(fb,-(int)sizeof(Mask),SEEK_END))

exit(0);

if (!fread(Mask,sizeof(Mask),1,fb))

exit(0);


学习过程中还了解到了一个新的东西  “莫比乌斯带”  只有一个面,感觉很神奇,有兴趣自己去百度看看,过山车就用到这个原理来节省了空间,个人理解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值