如何从 OpenGL 加载图像?
我已成功将图像作为纹理加载到 OpenGL(我使用 GTKmm 库中的 Gdk::Pixbuf),但我不知道如何从 OpenGL 获取修改后的图像并将其加载到 Gdk::Pixbuf...
我想在 OpenGL 中修改图像并将其保存在硬盘上。
有一些代码:
Glib::RefPtr<Gdk::Pixbuf> pixmap = Gdk::Pixbuf::create_from_file("image.jpg");
GLuint texture[1];
glBindTexture(GL_TEXTURE_2D, texture[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pixmap->get_width(), pixmap->get_height(), 0, GL_RGB, GL_UNSIGNED_BYTE, pixmap->get_pixels() );
I have succeed in loading an image to OpenGL as a texture (I use Gdk::Pixbuf from GTKmm library), but I have no idea how to get modified image from OpenGL and load it to Gdk::Pixbuf...
I want to modify images in OpenGL and the save them on hard disk.
There is some code:
Glib::RefPtr<Gdk::Pixbuf> pixmap = Gdk::Pixbuf::create_from_file("image.jpg");
GLuint texture[1];
glBindTexture(GL_TEXTURE_2D, texture[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pixmap->get_width(), pixmap->get_height(), 0, GL_RGB, GL_UNSIGNED_BYTE, pixmap->get_pixels() );
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将纹理四边形渲染到帧缓冲区,然后
glReadPixels()
。Render textured quad to the framebuffer and then
glReadPixels()
.只要你不使用OpenGL ES,而是真正的桌面OpenGL,你就可以使用
glGetTexImage
。As long as you don't use OpenGL ES, but real desktop OpenGL, you can just use
glGetTexImage
.如果你想避免绘制调用,你可以创建一个帧缓冲区并将纹理附加到颜色附件,然后使用 glReadPixels
If you want to avoid the draw call, you can create a framebuffer and attach the texture to a color attachment, then use glReadPixels