`
wsqwsq000
  • 浏览: 684997 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

glEnable(GL_DEPTH_TEST)作用

 
阅读更多

 

 

glEnable(GL_DEPTH_TEST): 用来开启更新深度缓冲区的功能,也就是,如果通过比较后深度值发生变化了,会进行更新深度缓冲区的操作。启动它,OpenGL就可以跟踪再Z轴上的像素,这样,它只会再那个像素前方没有东西时,才会绘画这个像素。

 

在做绘画3D时,这个功能最好启动,视觉效果比较真实。

分享到:
评论

相关推荐

    OopenGL习题讲解

    - 启用深度测试,以确保近处的对象覆盖远处的对象,`glEnable(GL_DEPTH_TEST);` 2. `display(void)`:这是显示函数,负责实际的渲染工作。在该函数中: - 清除颜色和深度缓冲区,`glClear(GL_COLOR_BUFFER_BIT | ...

    高级OpenGL-深度测试

    OpenGL-Depthtest 1. 深度测试 深度测试被启用时,将该片段的深度值与深度缓冲中的深度值比较,如果测试通过则更新缓冲中的深度值。深度测试在片段着色器运行后,模板测试之后进行。并且仅对屏幕空间中的片段进行...

    Depth-Test--Example.rar_opengl depth_visual c_风车 openGL

    1. 启用深度测试:调用`glEnable(GL_DEPTH_TEST)`函数开启深度测试功能。 2. 设置深度比较函数:使用`glDepthFunc()`函数设定深度比较方式,如GL_LESS,表示如果新绘制的像素的深度值小于深度缓冲区中的值,那么新...

    计算机图形学实验报告

    - **深度测试**:通过`glEnable(GL_DEPTH_TEST)`启用深度测试,确保正确渲染具有深度信息的三维对象。 - **设置光源**:定义光源的位置(`glLightfv(GL_LIGHT0, GL_POSITION, position)`)以及光源的属性,如漫...

    opengl橡皮筋

    glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); makeStripeImage(); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); #ifdef GL_VERSION_1_1 glGenTextures(1, &texName;); glBindTexture(GL_TEXTURE_1D, ...

    绘制九大星系

    glEnable(GL_DEPTH_TEST); // 设置太阳光源的其他属性 GLfloat sun_light_position2[] = {0.0f, 0.0f, 0.0f, 0.1f}; GLfloat sun_light_ambient2[] = {0.0f, 0.0f, 0.0f, 1.0f}; GLfloat sun_light_diffuse2[]...

    openGL程序

    glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glLigntModelfv(GL_LIGHT_MODEL_AMBIENT,noLight); glLightfv(GL_LIGHTO,GL_AMBIENT,ambientLight); glLightfv(GL_LIGHTO,GL_DIFFUSE,diffuseLight); ...

    opengl实现光源材质

    - 为了正确地绘制3D场景,必须开启深度测试(`glEnable(GL_DEPTH_TEST)`),确保近处的物体覆盖远处的物体。 - 考虑到透明和半透明物体,可能还需要调整混合模式(`glBlendFunc()`),如使用GL_SRC_ALPHA和GL_ONE_MINUS...

    OPENGL三维混合图形

    `glEnable(GL_DEPTH_TEST)` 是启用深度测试,它确保了在渲染时远距离的物体不会覆盖近处的物体,从而保持正确的前后关系。 在源程序中,`init()` 函数初始化了光照环境和对象列表。`glGenLists()` 用于创建OpenGL...

    opengl太阳系代码

    glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); ``` 这有助于确保模型在三维空间中的正确显示。 #### 纹理映射 纹理映射是一种将二维图像贴到三维模型表面上的技术,可以使模型更加逼真。在这段代码中,...

    OPenGL.zip_图案填充

    `glEnable(GL_DEPTH_TEST)`会启用这一功能,并通过`glDepthFunc()`设置深度测试条件。 7. **清除缓冲区**:在绘制之前,通常要清除颜色缓冲区和深度缓冲区,以确保每次绘制都从一个干净的背景开始。`glClear(GL_...

    opengl给旋转的立方体和球体赋予纹理贴图

    为了正确渲染多个物体,开启深度测试(`glEnable(GL_DEPTH_TEST)`)以确保近处的物体覆盖远处的物体。根据需要,还可以开启混合(`glEnable(GL_BLEND)`)以实现透明效果。 以上步骤概括了在OpenGL中为旋转的立方体...

    绘制光照球体

    - **启用深度测试**:`glEnable(GL_DEPTH_TEST)`,确保远距离的对象不会覆盖近处的对象。 - **设置材质属性**: - 设置漫反射颜色:`glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMaterial)`,其中`diffuseMaterial`...

    opengl 平行投影透视投影

    glEnable(GL_DEPTH_TEST); glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMaterial); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialf(GL_FRONT, GL_SHININESS, 25.0); glLightfv(GL_LIGHT0, GL...

    OpenGL.rar_OPENGL 纹理_opengl_opengl 纹理贴图_opengl纹理贴图_镂空效果

    1. 启用深度测试:调用`glEnable(GL_DEPTH_TEST)`,并设置适当的深度比较函数(如GL_LESS)。 2. 禁用深度写入:使用`glDepthMask(GL_FALSE)`,这样后续的渲染就不会覆盖已存在的深度值,从而保持镂空效果。 3. 使用...

    OpenGL编程指南(原书第7版)中文扫描版

    glEnable(GL_DEPTH_TEST); ``` - **剪裁平面:** ```c glClipPlane(GL_CLIP_PLANE0, plane_equation); glEnable(GL_CLIP_PLANE0); ``` #### 四、实例分析 **4.1 简单示例:绘制一个红色三角形** ```c #...

    MultipleLights-06.zip

    同时,也需要启用颜色混合和深度测试,以确保正确地处理光照和遮挡关系:glEnable(GL_COLOR_MATERIAL) 和 glEnable(GL_DEPTH_TEST)。 在Qtopengl中,这些 OpenGL 函数可以通过Qt的QGLFunctions类来调用。例如,可以...

    用OpenGL练习作图如三角形、四边形、线段等

    使用`glEnable(GL_DEPTH_TEST)`,并设置深度函数,如`glDepthFunc(GL_LESS)`,确保远处的对象不会被近处的对象遮挡。 7. **投影和视口**:使用`gluPerspective()`设置透视投影,调整视场角、近裁剪平面和远裁剪平面...

    BasicLighting-02.zip

    6. **深度测试**:为了正确处理遮挡和近似关系,通常需要开启深度测试`glEnable(GL_DEPTH_TEST)`。 7. **模型视图矩阵和投影矩阵**:通过`glMatrixMode`和`glLoadMatrix`来设置,它们决定了物体在屏幕上的位置和...

    opengl 源代码

    这通常通过调用`glEnable(GL_DEPTH_TEST)`函数完成。 2. **设置深度范围**:`glDepthRange()`函数用来定义深度缓冲区的范围,通常设置为0.0(最近)到1.0(最远)。 3. **深度比较**:OpenGL使用`glDepthFunc()`...

Global site tag (gtag.js) - Google Analytics