深度测试
来源:互联网 发布:母婴店软件 编辑:程序博客网 时间:2024/06/06 17:06
应用场景:加亮物体的边缘。
深度缓存会记录场景中物体与视点的距离。深度缓存主要用途是隐藏表面的消除。
void glPolygonOffset(GLfloat factor, GLfloat units);//设定偏移值void glPolygonMode();//设定多边形的光栅化方式。/*GL_POLYGON_FILL /LINE /POINT*/
offset = m * factor +r *units;
m 为多边形的最大斜率,r 为两个不同的深度之间可识别的最小差值。
m 计算方法为
或是
未设置偏移的效果:
设置偏移效果:
void Basic::draw(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); CHECK_GL_ERROR(); GLboolean bDepth = glIsEnabled(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST); CHECK_GL_ERROR(); glClear(GL_COLOR_BUFFER_BIT); CHECK_GL_ERROR(); const float position[] = { -1.0f, -1.0f, 1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, }; float color0[] = { 1.0f,0.0f,0.0f,1.0f, 1.0f,0.0f,0.0f,1.0f, 1.0f,0.0f,0.0f,1.0f, 1.0f,0.0f,0.0f,1.0f}; glVertexAttribPointer(posIndex, 2, GL_FLOAT, false, 2 * sizeof(float), position); glEnableVertexAttribArray(posIndex); glVertexAttribPointer(colorIndex, 4, GL_FLOAT, false, 4* sizeof(float), color0); glEnableVertexAttribArray(colorIndex); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); float color1[] = { 1.0f,1.0f,0.0f,1.0f, 1.0f,1.0f,0.0f,1.0f, 1.0f,1.0f,0.0f,1.0f, 1.0f,1.0f,0.0f,1.0f }; glVertexAttribPointer(colorIndex, 4, GL_FLOAT, false, 4 * sizeof(float), color1); glEnable(GL_POLYGON_OFFSET_LINE); glPolygonMode(GL_FRONT, GL_LINE); glPolygonOffset(-1.0, -1.0); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glDisable(GL_POLYGON_OFFSET_LINE); glDisableVertexAttribArray(posIndex); glDisableVertexAttribArray(colorIndex); glDisable(GL_DEPTH_TEST); glPolygonMode(GL_FRONT, GL_FILL);}
源码: https://t.xiaomiquan.com/QBeAa2n
阅读全文
0 0
- 深度测试
- 深度测试
- 深度测试
- 深度测试
- 深度测试
- openGL 深度格式 深度测试
- 关于深度、深度缓存和深度测试
- OpenGL中的深度、深度缓存、深度测试
- openGL 深度测试
- openGL 深度测试
- D3D深度测试
- 6、深度测试
- openGL 深度测试
- openGL 深度测试
- openGL 深度测试
- OpenGL: 深度测试
- opengl深度测试
- openGL 深度测试使用
- ARM学习资料
- Linux操作系统学习资料
- Linux驱动编程
- 欢迎使用CSDN-markdown编辑器
- OKhttp源码学习(二)—— OkHttpClient
- 深度测试
- Mybatis中javaType和jdbcType对应关系
- python垃圾回收
- c#(winform)环境下使用动态链接库dll的详解
- 。。
- Pace 11 (顺序表的增删改查)
- RGB HSV- 转载
- Python使用K-means聚类算法进行分类案例一则
- Linux内核移植(3)