相关疑难解决方法(0)

将数据从glReadPixels()转换为OpenCV :: Mat

我想通过glReadPixels()从动画中获取每个OpenGL帧,并将数据转换为OpenCV :: Mat.我知道glReadPixels()从左到右按行从下一行到上一行获取数据.另一方面,OpenCV以不同方式存储数据.

有没有人知道任何库或任何帮助我将数据从glReadPixels转换为OpenCV的教程/示例: C++中的Mat

摘要

 OpenGL frame      ----------------------->        CV::Mat

Data from left to right,                    Data from left to right,
bottom to top.                              top to bottom.
Run Code Online (Sandbox Code Playgroud)

c++ opengl opencv glreadpixels

21
推荐指数
1
解决办法
1万
查看次数

如何使用GLUT/OpenGL渲染文件?

我有一个程序模拟随时间变化的物理系统.我希望以预定的间隔(例如每10秒)输出模拟状态到文件的可视化.我想以这样的方式做到这一点,即很容易"关闭可视化"而根本不输出可视化.

我正在将OpenGL和GLUT作为图形工具来进行可视化.然而问题似乎是,首先,它看起来只是输出到窗口而无法输出到文件.其次,为了生成可视化,您必须调用GLUTMainLoop并停止执行main函数 - 从那时起调用的唯一函数是来自GUI的调用.但是我不希望这是一个基于GUI的应用程序 - 我希望它只是一个从命令行运行的应用程序,它会生成一系列图像.有没有办法在GLUT/OpenGL中执行此操作?或者OpenGL完全是错误的工具,我应该使用别的东西

opengl graphics glut visualization

19
推荐指数
2
解决办法
3万
查看次数

glReadPixels()"数据"参数用法?

我正在尝试使用glReadPixels从图像中获取颜色数据.我应该使用glReadPixels,但我似乎无法搞清楚.它是一个更大的项目的一部分,但现在我想要的只是知道如何正确使用它.

我查了一下,得到了这样的东西:

    void glReadPixels(GLint x, 
       GLint y, 
       GLsizei width, 
       GLsizei height, 
       GLenum format, 
       GLenum type, 
       GLvoid* data);
Run Code Online (Sandbox Code Playgroud)

但我不确定我应该在最后一个论点中加入什么,当我这样做时,我甚至会使用它.真的很感激帮助!(即:如何使用它的简单示例,或如何获得颜色)

c++ opengl graphics

13
推荐指数
2
解决办法
3万
查看次数

将OpenGL ES 2.0渲染为图像

我正在尝试对图像文件执行一些OpenGL ES 2.0渲染,而不依赖于在屏幕上向用户显示的渲染.我渲染的图像尺寸与用户屏幕不同.我只需要一个GL_RGB数据的字节数组.我对glReadPixels很熟悉,但我不认为它会在这种情况下发挥作用,因为我没有从已经渲染的用户屏幕中拉出来.

伪代码:

// Switch rendering to another buffer (framebuffer? renderbuffer?)

// Draw code here

// Save byte array of rendered data GL_RGB to file

// Switch rendering back to user's screen.
Run Code Online (Sandbox Code Playgroud)

如何在不中断用户显示的情况下执行此操作?我宁愿不必忽略用户的屏幕,为单帧绘制我想要的信息,glReadPixeling然后让它消失.

同样,我不希望它向用户显示任何内容.这是我的代码.不行......我错过了什么吗?

unsigned int canvasFrameBuffer;
bglGenFramebuffers(1, &canvasFrameBuffer);
bglBindFramebuffer(BGL_RENDERBUFFER, canvasFrameBuffer);
unsigned int canvasRenderBuffer;
bglGenRenderbuffers(1, &canvasRenderBuffer);
bglBindRenderbuffer(BGL_RENDERBUFFER, canvasRenderBuffer);
bglRenderbufferStorage(BGL_RENDERBUFFER, BGL_RGBA4, width, height);
bglFramebufferRenderbuffer(BGL_FRAMEBUFFER, BGL_COLOR_ATTACHMENT0, BGL_RENDERBUFFER, canvasRenderBuffer);

unsigned int canvasTexture;
bglGenTextures(1, &canvasTexture);
bglBindTexture(BGL_TEXTURE_2D, canvasTexture);
bglTexImage2D(BGL_TEXTURE_2D, 0, BGL_RGB, width, height, 0, BGL_RGB, BGL_UNSIGNED_BYTE, 0);
bglFramebufferTexture2D(BGL_FRAMEBUFFER, BGL_COLOR_ATTACHMENT0, BGL_TEXTURE_2D, canvasTexture, 0);

Matrix::matrix_t identity; …
Run Code Online (Sandbox Code Playgroud)

opengl-es

5
推荐指数
1
解决办法
2666
查看次数

在Vulkan中没有Surface的情况下是否可以进行屏幕外渲染?

类似于OpenGL中的无表面上下文,我们可以在Vulkan中做到。

vulkan

5
推荐指数
1
解决办法
1001
查看次数

标签 统计

opengl ×3

c++ ×2

graphics ×2

glreadpixels ×1

glut ×1

opencv ×1

opengl-es ×1

visualization ×1

vulkan ×1