标签: framebuffer

OpenGL FrameBuffer 上下颠倒和右下角

所以我正在制作一个可以使用 directx10,11 和 opengl 的引擎。

到目前为止一切都很顺利。它可以正确渲染 opengl 和 directx 中的图像,并且两者看起来相同。

现在我添加了渲染目标。在 DirectX 中它运行得很好并且到目前为止没有任何问题。但是使用 OpenGL,我之前绘制的纹理是颠倒的,位于渲染目标的右下角。

  截屏

你们知道问题是什么吗?为什么它在没有渲染目标的情况下也能正常工作?

如果需要我可以发送一些代码。我只需要先排序。

opengl framebuffer

4
推荐指数
1
解决办法
5164
查看次数

Linux Framebuffer正确设置分辨率

我有一个RaspberryPi,想在没有xserver的情况下全屏显示图像-因此直接将其写入帧缓冲区。没问题

但是将其全屏设置是行不通的。

cat /sys/class/graphics/fb0/modes
Run Code Online (Sandbox Code Playgroud)

产量:

U:1024x768p-0
U:1920x1200p-0
U:1920x1080p-0
U:608x684p-0
Run Code Online (Sandbox Code Playgroud)

所以我用

fbset -xres 1920 -yres 1200 -match
Run Code Online (Sandbox Code Playgroud)

导致

>>fbset
mode "1920x1200"
geometry 1920 1200 1920 1200 16
timings 0 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/16
endmode
Run Code Online (Sandbox Code Playgroud)

如果我现在用于fbi显示图像,或仅填充framebuffer /dev/urandom >> /dev/fb0,则仅填充部分屏幕。显示部分的长宽比等正确,周围只有一个大的黑色边界。

如果我使用其他分辨率,一切都会按预期运行,例如fbi中的stats-line变大等。

我做错了什么?

linux graphics framebuffer raspbian

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

OpenGL - 如何绘制到多采样帧缓冲区,然后将结果用作普通纹理?

我正在开发一个小游戏开发库。该库的元素之一是 Canvas(屏幕外绘图区),它是通过 OpenGL 帧缓冲区实现的。到目前为止,一切都很好,我生成了一个纹理,将它附加到帧缓冲区,渲染到它,然后使用帧缓冲区的纹理作为 Texture2D。

现在,我想向我的库中添加抗锯齿功能,因此我希望能够在 Canvas 上设置多重采样。现在我很困惑,因为我发现您需要更改着色器以使用多样本纹理等等。

那么,我应该怎么做才能为我的帧缓冲区启用多重采样,以便我尽量减少对库的其余代码的更改?如果可能,我只想将渲染结果用作常规 Texture2D。

opengl multisampling framebuffer antialiasing

4
推荐指数
1
解决办法
5861
查看次数

在 Linux 中的帧缓冲区上显示“Hello World”

我在我的 ARM 目标上使用了 linux 3.14 版本,我想使用帧缓冲区在显示器中显示一些字符行。我可以使用以下代码更改显示器的颜色。

#include <stdio.h>

unsigned char colours[8][4] = {
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
    { 0x00, 0xFF, 0x00, 0xFF }, // green
};

int frames[] …
Run Code Online (Sandbox Code Playgroud)

linux framebuffer

4
推荐指数
1
解决办法
2169
查看次数

glOadPixels与FBO太慢了

我正在使用openGL ES 2.0和GLSL着色器,并使用Renderbuffer(即屏幕外渲染)处理FBO.
它以30 fps工作正常.
但是当我使用glReadPixels或glcopyteximage2d时,它会下降到8 fps.
我做了类似的事情:

glBindFramebuffer(GL_FRAMEBUFFER, frameBuf);
//DRAW something
glReadPixels(...); //HERE
glBindFramebuffer(GL_FRAMEBUFFER, 0);
Run Code Online (Sandbox Code Playgroud)

无论如何我可以提高速度吗?我的意思是当我不使用FBO并使用相同参数的glReadPixels时,它的工作速度为15 fps,我认为使用FBO可以提高速度吗?

opengl-es framebuffer glreadpixels

3
推荐指数
1
解决办法
3333
查看次数

将整数纹理附加到帧缓冲区

我正在尝试将具有内部格式的纹理附加GL_R32UI到帧缓冲区,以用作ID缓冲区。但是,即使它是唯一的附件,也要glCheckFramebufferStatus不断提出GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

这对我来说很奇怪,因为OpenGL 4.2规范似乎GL_R32UI表明OpenGL实现是附加到帧缓冲区时OpenGL实现必须支持的格式之一。我怀疑这是驱动程序错误。我是对的,还是有人可以告诉我我所忽略的东西?

opengl graphics textures framebuffer render-to-texture

3
推荐指数
1
解决办法
1423
查看次数

使用GLFW + GLEW时glGenFramebuffers()访问冲突

我收到此错误:

"访问冲突执行位置0x00000000."

当我在Windows上使用GLFW + GLEW时.

我正在使用Windows 7.我也有自己的实现(从头开始)创建一个窗口,初始化OpenGL上下文,初始化GLEW等等......一切正常.所以当然我的视频卡具有帧缓冲功能,驱动程序的一切都很好......问题只发生在我尝试使用GLFW时.

有什么建议吗?

代码:

void start()
{
    if( !glfwInit() )
    {
        glfwTerminate();
        throw exception( "Failed to initialize GLFW" );
    }

    glfwOpenWindowHint( GLFW_FSAA_SAMPLES, 4 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 3 );
    glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );

    if( !glfwOpenWindow( m_width, m_height, 0, 0, 0, 0, 32, 0, GLFW_WINDOW ) )
    {
        throw exception( "Failed to open GLFW window." );
        glfwTerminate();
    }

    if ( glewInit() != GLEW_OK )
    {
        throw exception( "Failed to initialize GLEW" );
    } …
Run Code Online (Sandbox Code Playgroud)

opengl fbo glew framebuffer glfw

3
推荐指数
1
解决办法
5049
查看次数

从原始帧缓冲数据获取jpg图像

我能够得到android framebuffer.But我不知道如何将这些原始字节转换为jpg图像文件.如果我尝试使用java bufferedImage.setpixel方法在我的笔记本电脑上绘制图像.我得到不正确的彩色图像

Process sh = Runtime.getRuntime().exec("su", null,null);    
OutputStream  os = sh.getOutputStream();
os.write("/system/bin/cat /dev/graphics/fb0 > /sdcard/img.raw".getBytes());
os.flush();          
os.close();
sh.waitFor();`
Run Code Online (Sandbox Code Playgroud)

java android framebuffer

3
推荐指数
1
解决办法
3550
查看次数

线性过滤可以用于MSAA纹理的FBO blit到非MSAA纹理吗?

我有两个2D纹理.第一个是MSAA纹理,使用的是目标GL_TEXTURE_2D_MULTISAMPLE.第二个非MSAA纹理使用目标GL_TEXTURE_2D.

根据OpenGL 关于ARB_texture_multisample规范,GL_NEAREST在绘制MSAA纹理时,只有一个有效的过滤选项.

在这种情况下,这两个纹理都GL_COLOR_ATTACHMENT0通过各自的Framebuffer对象附加.他们的分辨率也是相同的大小(根据我的知识,这对于将MSAA与非MSAA联系起来是必要的).

因此,考虑到当前的限制,如果我将MSAA保持FBO到非MSAA持有FBO,我仍然需要GL_NEAREST用作过滤选项,或者是否GL_LINEAR有效,因为两个纹理都已经被渲染到?

opengl textures framebuffer blit msaa

3
推荐指数
1
解决办法
743
查看次数

嵌入式Qt鼠标指针未显示

我这里有一个有趣的问题。我发现了很多线程,人们可以在其中隐藏或摆脱嵌入式Qt GUI上的游标...但是我试图使游标显示在嵌入式Qt GUI上。

我继承了一个在一段时间前“完成”的项目,而在该项目上做最多工作的人已经继续前进。快进到今天,需要在此功能性触摸屏GUI中添加光标。系统操作系统是Yocto Linux,并且在帧缓冲区上运行Qt 5.4应用程序。

我已经搜索了Qt代码,那里没有任何东西可以隐藏光标。我已经在Qt启动脚本中添加了适当的QT_QPA_FB_HIDECURSOR = 0环境变量。我已经尝试过向GUI添加QCursor对象。不幸的是,这些都不起作用。使用QCusor,我有时可以在屏幕上向上移动光标,但并不局限于触摸输入(光标显示在我以编程方式将其移动到的位置,但是当我与GUI交互时会停留在该位置) 。

我的触摸输入事件绑定到Qt(通过QT_QPA_GENERIC_PLUGINS = evdevtouch和QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS = / dev / input / event9:rotate = 180),但是由于某些原因触摸输入无法绑定到光标。

在这一点上,我花了几天时间弄乱环境变量和启动脚本修改,但是我所做的一切都没有得到我想要的结果。

是否有人在哪里寻找解决此问题的方法的想法?

谢谢!伊恩

linux qt framebuffer driver yocto

3
推荐指数
1
解决办法
2802
查看次数