OpenGL中线框图的消隐(转, 作者Y_Y)

原创 2007年09月22日 21:43:00
 隐藏线消除
使用深度缓存的2通道绘制的OpenGL实现:
1. 禁写颜色缓存
    glColorMask(0, 0, 0, 0);
2. 启用深度测试
    glEnable(GL_DEPTH_TEST);
    glDepthFunc (GL_LESS);
3. 以多边形填充模式绘制对象,要使用多边形偏移(Pass1)
    glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
    glPolygonOffset(1.1f, 4.0f);
    glEnable (GL_POLYGON_OFFSET_FILL);  //启用多边形偏移
    drawScene ();
    glDisable (GL_POLYGON_OFFSET_FILL);
4. 启用颜色缓存
    glColorMask(1, 1, 1, 1);
5. 采用两种线绘制方式之一绘制对象中包含的线段(Pass2).

具体实现代码

int DrawGLScene(GLvoid)        // 从这里开始进行所有的绘制
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除屏幕及深度缓存
    glLoadIdentity();     // 重置模型观察矩阵
    glTranslatef(0.0f,0.0f,-5.0f);      // 移入屏幕 5 个单位
    static float xrot=0.0f,yrot=0.0f,zrot=0.0f;
    glRotatef(xrot,1.0f,0.0f,0.0f);      // 绕X轴旋转
    glRotatef(yrot,0.0f,1.0f,0.0f);      // 绕Y轴旋转
    glRotatef(zrot,0.0f,0.0f,1.0f);      // 绕Z轴旋转
   
    glDisable(GL_TEXTURE_2D);
   
    glColorMask(0,0,0,0);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glPolygonOffset(1.1f, 4.0f);
    glEnable (GL_POLYGON_OFFSET_FILL);  //启用多边形偏移
    //auxSolidSphere(1.0);
    auxSolidTeapot(1.0);
    glDisable (GL_POLYGON_OFFSET_FILL);
    glColorMask(1, 1, 1, 1);
    glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
    //auxSolidSphere(1.0);
    auxSolidTeapot(1.0);
   
    xrot+=1.3f;        // X 轴旋转
    yrot+=1.2f;        // Y 轴旋转
    zrot+=1.4f;        // Z 轴旋转
    return TRUE;       //  一切 OK
}

OpenGL中线框图的消隐

隐藏线消除使用深度缓存的2通道绘制的OpenGL实现:1. 禁写颜色缓存    glColorMask(0, 0, 0, 0);2. 启用深度测试    glEnable(GL_DEPTH_TEST)...
  • Augusdi
  • Augusdi
  • 2014年02月17日 22:56
  • 2061

扫描线zbuffer消隐算法

本片blog阐述了图形学中扫描线缓冲器消隐算法的原理和C++实现。
  • a_big_pig
  • a_big_pig
  • 2016年04月01日 23:02
  • 4869

【OpenGL】透视和ZBuffer

除了Graphic Pipeline外,ZBuffer是我最想介绍的部分了,因为有一些很酷实现都依赖于此(比如Shadow、Field Of View、SSOA)。先提出问题吧:是什么环节下的产物,有...
  • stalendp
  • stalendp
  • 2016年03月11日 23:59
  • 6916

OpenGL 利用中点算法画y=kx+b直线

本文直接用(0< k 0, 那么该点在这条直线的上方 若F(x,y) = 0, 那么该点在这条直线上 若F(x,y) ...
  • Codeblocksm
  • Codeblocksm
  • 2016年03月27日 13:32
  • 789

OpenGL 利用中点算法画抛物线:y = x*x / 16

算法已不再赘述。具体学习请访问: http://blog.csdn.net/codeblocksm/article/details/50991357这里需要指出的是要将抛物线分成两部分。在斜率为1之...
  • Codeblocksm
  • Codeblocksm
  • 2016年03月27日 13:48
  • 1149

OpenGL ES 背面消隐特性在 iOS 设备与模拟器上的运行效果细微差异

OpenGL ES 背面消隐特性在 iOS 设备与模拟器上的运行效果细微差异
  • sleks
  • sleks
  • 2014年01月03日 20:48
  • 1115

opengl消隐与光照

1.      设置材料的颜色 OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。和光一样,材料也具有不同的环境、散射和镜面颜色,它们决定了材料对红、绿和蓝光的反射率。材料的环境...
  • sinat_31601333
  • sinat_31601333
  • 2016年12月10日 15:16
  • 1025

opengl画圆环,并且能够进行x及y方向的变换

  • 2009年10月28日 21:57
  • 4KB
  • 下载

OpenGL消隐和光照

  • 2016年05月28日 09:21
  • 8.02MB
  • 下载

opengl 消隐算法

  • 2014年11月24日 16:25
  • 5.86MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL中线框图的消隐(转, 作者Y_Y)
举报原因:
原因补充:

(最多只允许输入30个字)