怎样设置Framebuffer

环境:Redhat9.02

启动级别:3


配置内核:

首先要再编译内核是选中如下几项:

Code maturity level options --->[*] Prompt for development and/or incomplete code/drivers
Processor type and features --->[*] MTRR (Memory Type Range Register) support
Block Devices ->[*] Loopback device support[*] RAM disk support
(4096) Default RAM disk size[*] Initial RAM disk (initrd) support
Console Drivers ->[*] VGA text console[*] Videomode selection support
Console Drivers -> Frame-buffer support ->[*] Support for frame buffer devices[*] VESA VGA graphics console[*] Use splash screen instead of boot logo 

配置Bootloader

Grub

修改/etc/grub.conf,在kernel项的最后添加vga参数和fb,例如:

kernel  /boot/vmlinuz-2.4.20-8 ro root=LABEL=/  vga=0x311 fb:on

LILO

修改/etc/lilo.conf,添加vga参数,例如:

vga=0x311
修改后执行lilo命令,写入bootloader。


vga参数的可选值如下:

Depth

640x400

640x480

800x600

1024x768

1152x864

1280x1024

1600x1200

4 bits

?

?

0x302

?

?

?

?

8 bits

0x300

0x301

0x303

0x305

0x161

0x307

0x31C

15 bits

?

0x310

0x313

0x316

0x162

0x319

0x31D

16 bits

?

0x311

0x314

0x317

0x163

0x31A

0x31E

24 bits

?

0x312

0x315

0x318

?

0x31B

0x31F

32 bits

?

?

?

?

0x164

?

?

修改后重启系统,会在右上角看到一个Linux的企鹅Logo


在Qt中,Framebuffer对象通常用于创建自定义渲染窗口或者处理图形输出。为了设置Framebuffer的刷新流程,你需要遵循以下几个步骤: 1. **创建FrameBuffer对象**: 首先,通过`QOpenGLFramebufferObject`类创建一个新的帧缓冲对象。这需要指定宽度、高度和目标格式(如GL_RGBA8)。 ```cpp QOpenGLFramebufferObject *fb = new QOpenGLFramebufferObject(width, height, GL_RGBA8); ``` 2. **绑定到当前上下文**: 在进行绘图操作前,你需要将这个帧缓冲对象绑定到当前的OpenGL上下文中,以便所有的绘制都会记录在这个缓冲里。 ```cpp glBindFramebuffer(GL_FRAMEBUFFER, fb->handle()); ``` 3. **设置视口**: 设置GL_VIEWPORT以匹配帧缓冲的大小,这样后续绘制就会在新的区域内进行。 ```cpp glViewport(0, 0, width, height); ``` 4. **进行绘画操作**: 这阶段可以使用OpenGL API进行正常的图形渲染和绘制,所有内容会被添加到帧缓冲中。 5. **检查并完成帧缓冲**: 使用`glCheckFramebufferStatus(GL_FRAMEBUFFER)`检查帧缓冲是否完整。如果成功,状态应该是GL_FRAMEBUFFER_COMPLETE。 ```cpp GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { // Handle error } ``` 6. **切换回默认帧缓冲并显示**: 当渲染完成后,记得解除对帧缓冲的绑定,并切换回默认的主屏幕帧缓冲,以便内容能被显示出来。 ```cpp glBindFramebuffer(GL_FRAMEBUFFER, 0); // Unbind the framebuffer // ... call glFlush() or glSwapBuffers() to show the rendered content on screen ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值