渲染到纹理(转载)
来源:互联网 发布:vs2013怎么写c语言 编辑:程序博客网 时间:2024/06/05 17:24
1. 渲染到帧缓存,然后用glReadPixels将需要的部分读入到客户内存,然后使用glTexImage()函数创建纹理
2.渲染到帧缓存,然后使用glCopyTexImage() 直接从帧缓存创建纹理
3.渲染到帧缓存,然后使用glCopyTexSubImage() 从帧缓存中读出需要的部分更新纹理的一部分
4.使用 pbuffer,直接渲染到纹理
用pbuffer的DC 和RC作为渲染设备和渲染上下文执行渲染
5. 使用 framebuffer object (FBO)扩展: GL_EXT_framebuffer_object
将场景渲染到一个同屏幕大小一致的浮点纹理,在通过一些操作处理,能实现一些非常好的效果.
1、使用OpenGL中的一些简单的纹理操作函数也可以达到渲染到纹理的功能
首先建立一个长宽为x,y的空纹理,设置的纹理参数可以按需求改变
......
执行要渲染到纹理的场景......
这样就建立好了,使用的时候就可以直接调用纹理texture绑定使用。
2、使用PBO
建立PBuffer
int pfAttribFList[] = {
g_hDC
g_hGLRC
wglShareLists(m_hWinGLRC, g_hGLRC);
wglMakeCurrent(g_hDC, g_hGLRC);
PBuffer可以看作重新建立的一个隐形窗口,设置像素和投影矩阵,和OpenGL等一些属性
注:设置OpenGL的一些属性,如光照,纹理等,还有透视矩阵等
渲染过程中:
wglMakeCurrent(g_hDC, g_hGLRC);
渲染场景....
调用纹理函数跟新纹理
glBindTexture(GL_TEXTURE_2D, m_uiTexture);
wglMakeCurrent(m_hWinDC, m_hWinGLRC);
调用纹理进行渲染。
3、使用FBO
首先建立空纹理,创建帧缓冲区和深度缓冲区......
glGenFramebuffersEXT(1, &fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glFramebufferTexture2DEX
glGenRenderbuffersEXT(1, &depth);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth);
glRenderbufferStorageEXT
// 建立深度缓冲区
glFramebufferRenderbuffe
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
//
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
// 渲染场景...
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
// 完成渲染后,便可以直接调用纹理进行渲染
- 渲染到纹理(转载)
- 渲染到纹理(转)
- Render to Texture(渲染到纹理)
- Render to Texture(渲染到纹理)
- 渲染到纹理(render to texture)
- Render to Texture(渲染到纹理)
- d3d10 渲染到纹理(rtt)
- 渲染到纹理
- Direct3D渲染到纹理
- RTT--渲染到纹理!
- Ogre渲染到纹理
- DirectX-渲染到纹理
- DirectX-渲染到纹理
- 渲染到纹理
- DirectX-渲染到纹理
- OGRE渲染到纹理
- DirectX-渲染到纹理
- OpenGL渲染到纹理
- POJ 1036 Gangsters 题解
- QTP 自定义方法将IE最大化最小化
- ArcObjects帮助文档翻译--释放COM对象 Releasing COM references
- Cookie和Session的了解
- Android开发给TextView添加点击事件
- 渲染到纹理(转载)
- 分享一些爱情名句
- BFS、双向BFS和A*
- 第12周项目1 阅读程序(整型变量)
- The SDK Build Tools revision<19.0.0> is too low for project*.*
- 手机设计中的回声及消除
- free之后要记得指针置空
- 【菜鸟上路】卡特兰数的一点研究
- KVM