博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL 学习笔记
阅读量:6578 次
发布时间:2019-06-24

本文共 1368 字,大约阅读时间需要 4 分钟。

1.GL状态还原

GL相当于状态机,当开启一个状态需要关闭状态进行还原状态避免下个渲染状态出错导致渲染错误

2.glDrawElements 1282报错问题

这个问题找了挺久,单独绘制没问题,和C++ 3D渲染引擎一起绘制就会有时报错1282,初步判断3D渲染引擎的封装改变了GL状态,根据断点和现象分析,最后绘制是3D模型就会报错,而2D的不会。只好继续分析3D和2D的流程,才发现GL_ELEMENT_ARRAY_BUFFER被改变导致

GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, 0);复制代码

3.GL录屏深度缓冲区问题

开启录屏后,3D模型渲染有问题,结合现象判断可能是抗锯齿或者深度问题,同样深度16依然有问题,用 GLES11Ext.GL_DEPTH_COMPONENT24_OES 深度24才解决。

GLES20.glRenderbufferStorage(GLES20.GL_RENDERBUFFER,       GLES11Ext.GL_DEPTH_COMPONENT24_OES, width, height);复制代码

4.3D透明深度缓冲区

3D模型开启深度测试透明渲染有问题,可以设置当前node的TAG是否透明,根据在render的时候node的TAG判断是否需要开启glDepthMask,glDepthMask 用来判断允许或不允许写入深度缓冲区,也可以用渲染队列统一管理,避免频繁开关glDepthMask

glDepthMask(GL_TRUE);复制代码

5.shader UV镜像翻转

图像需要镜像翻转,shader UV进行转换一下就行了,或者通过矩阵运算也可以解决问题

x轴镜像:1.0-vTextureCoord.x  y轴镜像:1.0-vTextureCoord.y复制代码

6.3D模型表情的Alpha测试(使用Discard)

3D模型的表情是带有透明的贴图,渲染出来透明的地方带颜色且半透着背景,通过现象观察,感觉不渲染透明的片段就可以了,用Discard实现Alpha测试。

#if defined(TEXTURE_DISCARD_ALPHA)    if (gl_FragColor.a < 0.25)        discard;    #endif复制代码

上面片段着色器代码Texture是RGBA,Alpha通道用于Alpha测试。Alpha值小于0.25,就会被Discard“杀死”片段,不渲染这个片段。当然0.25不是固定值,可以根据需求更改。如果你的片段着色器没有用到defined,直接写下面代码即可

if (gl_FragColor.a < 0.25)        discard;复制代码

7.透明剔除(使用blend混合)

用Discard实现Alpha剔除,旋转或者缩放发现不太稳定,而且逐像素剔除效率不高,所以推荐使用blend混合进行Alpha剔除

blendSrc = SRC_ALPHA        blendDst = ONE_MINUS_SRC_ALPHA复制代码

转载于:https://juejin.im/post/5c89f6ebe51d454530230561

你可能感兴趣的文章
socket 编程入门教程(五)UDP原理:4、“有连接”的UDP
查看>>
Jquery获取iframe中的元素
查看>>
Laravel 学习笔记5.3之 Query Builder 源码解析(下)
查看>>
Struts2简单入门实例
查看>>
2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
查看>>
BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
查看>>
Craking the Interview-1
查看>>
CCF NOI1150 确定进制
查看>>
SpringBoot实战总汇--详解
查看>>
2018年7月1日笔记
查看>>
尝试使用iReport4.7(基于Ubuntu Desktop 12.04 LTS)
查看>>
动态规划:金矿模型
查看>>
子元素应该margin-top为何会影响父元素【转】
查看>>
AJAX 状态值(readyState)与状态码(status)详解
查看>>
BZOJ3668:[NOI2014]起床困难综合症(贪心)
查看>>
LightOJ 1245(Harmonic Number (II))
查看>>
小知识记录
查看>>
109. Convert Sorted List to Binary Search Tree
查看>>
css3 animate 和关键帧 @-webkit-keyframes
查看>>
文字链接颜色设置
查看>>