OpenGL ES 3.0-Multiple Render Targets
来源:互联网 发布:手机广告语制作软件 编辑:程序博客网 时间:2024/09/21 06:17
MRT,多渲染对象,用来将场景同时渲染到多个目标中去。
1. 设置4个渲染目标
bool initFramebuffer(int w, int h){glGenRenderbuffers( 1, &g_DepthRenderBuffer); glBindRenderbuffer( GL_RENDERBUFFER, g_DepthRenderBuffer ); glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, w, h);CHECK_GL_ERRORglGenFramebuffers(1, &g_FrameBuffer);glBindFramebuffer(GL_FRAMEBUFFER, g_FrameBuffer);CHECK_GL_ERRORfor(int i = 0; i <= 3; ++i)glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i, GL_TEXTURE_2D, g_Texture2Ds[i], 0);glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER,g_DepthRenderBuffer );CHECK_GL_ERRORGLenum DrawBuffers[4];DrawBuffers[0] = GL_COLOR_ATTACHMENT0;DrawBuffers[1] = GL_COLOR_ATTACHMENT1;DrawBuffers[2] = GL_COLOR_ATTACHMENT2;DrawBuffers[3] = GL_COLOR_ATTACHMENT3;glDrawBuffers(4, DrawBuffers);CHECK_GL_ERRORif(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)return false;//glBindFramebuffer( GL_FRAMEBUFFER, 0 );//glBindRenderbuffer( GL_RENDERBUFFER, 0 ); return true;}
2. 渲染到4个渲染目标
#version 300 es#ifdef GL_FRAGMENT_PRECISION_HIGHprecision highp float;#elseprecision mediump float;#endif#define FRAG_RED0#define FRAG_GREEN1#define FRAG_BLUE2#define FRAG_RGBA3invec3 vColor;in vec3 vPos;layout(location = FRAG_RED) out vec4 Red;layout(location = FRAG_GREEN) out vec4 Green;layout(location = FRAG_BLUE) out vec4 Blue;layout(location = FRAG_RGBA) out vec4 RGBA;void main(){vec4 Color = vec4(vColor, 1.0) * 0.7f;float light = 1.0 / (length(vPos)+0.5f);Red = vec4(Color.r * light, 0, 0, 1);Green = vec4(0, Color.g * light, 0, 1);Blue = vec4(0, 0, Color.b * light,1);RGBA = Color * light;}
- OpenGL ES 3.0-Multiple Render Targets
- Multiple Render Targets in OpenGL with Cg
- ShaderSimpler(9) : Deferred shading with Multiple Render Targets
- 在D3D中使用MRT(Multiple Render Targets)
- 使用Opengl ES GlSurfaceView Render Camera preview
- GLSL使用FBO实现MRT(Multiple Render Targets)绘制到多张纹理
- Android Dev Intro - Opengl ES 2.0 Render Stranges
- IOS Dev Intro - Subclass UIView to Render by Opengl ES
- OpenGL ES 帧缓冲对象(FBO):Render to texture
- Android OpenGL ES 离屏渲染(offscreen render)
- 最简单的 MRTs(Multi Render Targets)的完整代码示例【OpenGL】
- android OpenGL ES实现渲染到透明的纹理 render to transparent texture
- OpenGL ES 3.0 新特性
- OPENGL ES
- OpenGL ES
- OpenGL ES
- opengl es
- OpenGL ES
- memcache的运行状态stats命令
- LINUX时间戳转换
- http状态码说明
- keepalived 主备安装配置
- 一天最小的开销
- OpenGL ES 3.0-Multiple Render Targets
- pureftpd安装配置
- Struts2实现多文件上传
- JBOSS端口修改
- sp_get_checkDataList
- python,a new begining
- C#使用匿名管道在本地进程之间进行通信
- 主要erlang语法的汇编实现
- 删除过期文件shell