OpenGL场景保存为图片

 

前两天突发奇想,想把OpenGL生成的场景保存为图片格式(代替QQ截屏),于是在网上找了找,发现关于这方面的代码还是挺多的,但想让程序跑起来不是很容易,我总结了一下:把OpenGL的场景保存为图像,大致有两种思路:一、混合法,先用OpenGLglReadPixel函数读取窗口每个像素的RGB值,存放在动态数组中,然后调用OpenCVlibjpeg等其他专用库来生成图像;二、第一步是相同的,第二步自己写函数来保存图像。第二种方法常常选择格式的bmp图像。

话不多说,上ppcode

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android OpenGL 中使用 Texture ID 来保存预览图片,您需要执行以下步骤: 1. 创建 OpenGL 纹理对象。 2. 将纹理对象绑定到 GL_TEXTURE_2D 目标上。 3. 使用 glTexImage2D 函数将预览图片数据加载到纹理对象中。 4. 将纹理对象的 ID 传递给 shader program。 5. 在 shader program 中使用纹理对象中的数据渲染场景。 下面是一个简单的示例代码,展示了如何在 Android OpenGL 中使用 Texture ID 保存预览图片: ``` // 创建 OpenGL 纹理对象 int[] textureIds = new int[1]; GLES20.glGenTextures(1, textureIds, 0); // 将纹理对象绑定到 GL_TEXTURE_2D 目标上 GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureIds[0]); // 使用 glTexImage2D 函数将预览图片数据加载到纹理对象中 GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, previewWidth, previewHeight, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, ByteBuffer.wrap(previewData)); // 将纹理对象的 ID 传递给 shader program int textureLocation = GLES20.glGetUniformLocation(shaderProgram, "uTexture"); GLES20.glUniform1i(textureLocation, textureIds[0]); // 在 shader program 中使用纹理对象中的数据渲染场景 // 这里假设您已经编写了 shader program,并且可以将预览数据渲染到屏幕上 ``` 请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体需求进行更改。另外,您需要确保预览数据的格式和纹理对象的格式匹配,否则可能会导致渲染错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值