OpenGL ES 渲染到纹理
我一直很难找到简单的代码来将场景渲染到 OpenGL ES 中的纹理(特别是 iPhone,如果这很重要的话)。 我有兴趣了解以下内容:
- 如何将场景渲染到 OpenGL ES 中的纹理?
- 必须使用哪些参数来创建能够成为 OpenGL ES 渲染目标的纹理?
- 将此渲染纹理应用于其他基元是否有任何影响?
I have been having trouble finding straightforward code to render a scene to a texture in OpenGL ES (specifically for the iPhone, if that matters). I am interested in knowing the following:
- How do you render a scene to a texture in OpenGL ES?
- What parameters must you use to create a texture that is capable of being a render target in OpenGL ES?
- Are there any implications with applying this rendered texture to other primitives?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我就是这样做的。
我定义了一个纹理变量(我使用 Apple 的
Texture2D
类,但如果需要,您可以使用 OpenGL 纹理 id)和一个帧缓冲区:然后在某个时刻,我创建纹理、帧缓冲区和附加渲染缓冲区。 这个你只需要做一次:
每次我想渲染到纹理时,我都会这样做:
关于你的问题3,就是这样,你可以像使用任何其他纹理一样使用该纹理。
This is how I'm doing it.
I define a texture variable (I use Apple's
Texture2D
class, but you can use an OpenGL texture id if you want), and a frame buffer:Then at some point, I create the texture, frame buffer and attach the renderbuffer. This you only need to do it once:
Every time I want to render to the texture, I do:
About your question 3, that's it, you can use the texture as if it is any other texture.
要将场景渲染为纹理,您必须使用与纹理关联的帧缓冲区。 这是我为了简化它而创建的一个方法:
您可以轻松地创建帧缓冲区和纹理:
您稍后可以在绘制方法中使用 _framebuffer 将场景渲染到 _texture 中:
现在您可以对纹理执行您想要的操作。 如果你想做一些后期处理(模糊、光晕、阴影等),你也可以!
To render the scene to a texture you must use a framebuffer associated with a texture. Here is a method that i created to simplify it :
You can create the frame buffer and the texture easily :
You can later use _framebuffer to render the scene into _texture in your draw method :
Now you can do what you want with the texture. If you want to do some post processing (blur, bloom, shadow, etc...) you can !