社区
Linux/Unix社区
帖子详情
急急急:怎么取得linux系统的分辨率
sfly47
2008-11-26 09:09:08
最近有个任务,要把win32中的程序移植到linux中,其中需要取系统的分辨率,但由于小弟我对linux编程不熟,想请教一下通过什么函数可以取linux系统的分辨率,万分感谢!!!
...全文
522
11
打赏
收藏
急急急:怎么取得linux系统的分辨率
最近有个任务,要把win32中的程序移植到linux中,其中需要取系统的分辨率,但由于小弟我对linux编程不熟,想请教一下通过什么函数可以取linux系统的分辨率,万分感谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjpdhappy
2011-04-29
打赏
举报
回复
最近也涉及到这方面的知识,对frame buffer编程即可获得当前显卡缓冲区的分辨率数据
puheavy123
2009-06-18
打赏
举报
回复
cat /etc/X11/xorg.conf里面就有lz所需要的信息
zhouxingyu896
2009-06-17
打赏
举报
回复
学习
zjwumei
2009-06-17
打赏
举报
回复
好厉害呀
hanb99
2008-11-30
打赏
举报
回复
学习了
do_one_thing
2008-11-28
打赏
举报
回复
[Quote=引用 5 楼 chenzhixin 的回复:]
GDK可以用这个函数
gint gdk_screen_get_width (GdkScreen *screen);
gint gdk_screen_get_height (GdkScreen *screen);
单纯的C语言我不清楚
void
get_screen_size(int *width_p, int *height_p)
{
*width_p = DisplayWidth(dpy, screen) ;
*height_p = DisplayHeight(dpy, screen) ;
}
[/Quote]强
chenzhixin
2008-11-28
打赏
举报
回复
GDK可以用这个函数
gint gdk_screen_get_width (GdkScreen *screen);
gint gdk_screen_get_height (GdkScreen *screen);
单纯的C语言我不清楚
void
get_screen_size(int *width_p, int *height_p)
{
*width_p = DisplayWidth(dpy, screen) ;
*height_p = DisplayHeight(dpy, screen) ;
}
cjx_epop
2008-11-26
打赏
举报
回复
一、查看显卡相关信息
glxinfo | grep -i rend
direct rendering: Yes
运行这个命令,如果显示不是“Yes”,说明还需要自己去安装一下驱动(显卡)。
1、在linux的终端上执行:
[root@localhost ~]# glxinfo | grep -i rend
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
OpenGL renderer string: Mesa GLX Indirect
2、在txt模式下:
[root@localhost ~]# glxinfo | grep -i rend
Error:unable to open display
两者显示结果不一样,原因:
是X终端与文本模式(console)下区分,在console下,显卡驱动还没有启用,所以无法得到信息。
二、显示器分辨率及刷新率设置
1、X终端下显示器分辨率及刷新率设置
刷新率和分辨率可以在/etc/X11/xorg.conf中设置
(1)对显示器行频(水平分辨率)和场频(垂直分辨率)的设置
在xorg.conf中有类似一段:
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "206STUDIO"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
EndSection
其中HorizSync,VertRefresh分别是显示器行频(水平分辨率)和场频(垂直分辨率)的设置
应该根据显示器的性能进行设置,他们的值决定了显示分辨率和刷新频率可能取值的范围。
(2)对首先和可选分辨率的设置
在xorg.conf中有类似一段:
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480" "1280x1024"
EndSubSection
EndSection
行 :
Modes "1024x768" "800x600" "640x480"
设置了三种可选的分辨率,排在最前面的就是首选的分辨率,也就是一般生效的分辨率。X启动时如果首选的分辨率无效,比如过高,会依次尝试后面的分辨率。
2、文本模式下显示器分辨率及刷新率设置
(1)、grub的:
/boot/grub/menu.lst 文件中
title Debian GNU/Linux, kernel 2.6.22-3-686
root (hd0,5)
kernel /vmlinuz-2.6.22-3-686 root=/dev/hda1 ro vga=794
initrd /initrd.img-2.6.22-3-686
savedefault
说明:
vga=794,修改此值可以修改在文本模式下的分辨率
vga=794 => 1280x1024x16
vga=788 => 800x600x16
(2)、lilo的基本也差不多。
三、内核不能识别出显示是否就进不了X-Windows ?
(1)显卡驱动:内核提供的驱动与显示供应商提供的驱动的差别在于3D,内核不认显卡是进不了X的,不过,可以用vesa的标准驱动,因为各个厂家提供的显卡都支持vesa的标准
(2)、信息用Xorg -configure 自动获取的
*********************************************************************************** Monitor本条目介绍了显示器的相关知识。 场频 场频又称为“垂直扫描频率”或“刷新率”。指单位时间(以秒计)之内电子枪对整个屏幕进行扫描的次数,通常以赫兹(Hz)表示。以85Hz刷新率为例,它表示显示器的内容每秒钟刷新85次。
CRT 显示器上显示的图像是由很多荧光点组成的,每个荧光点都由于受到电子束的击打而发光,不过荧光点发光的时间很短,所以要不断地有电子束击打荧光粉使之持续发光。
电子束不能同时轰击屏幕上的两个点,因此显示器在工作时,以极快的速度从视频卡读取数据,同时由电子枪的偏转电路部分控制偏转线圈对电子束射出的方向进行改变,使电子束从屏幕左上角开始,从左至右,从上至下,依次对每个点进行轰击,虽然时间上有先后顺序。
但由于电子束把屏幕整个扫描一次只需 10~20ms的时间,加上荧光体的辉光残留和人眼的视觉暂留现象,所以只要刷新够快,刷新率够高,人眼就能看到持续、稳定的画面,不会感觉到明显的闪烁和抖动。垂直扫描频率越高,闪烁情况越不明显,眼睛也就越不容易疲劳。
从理论上来讲,只要刷新率达到85Hz,也就是每秒刷新85次,人眼就感觉不到屏幕的闪烁了,但实际使用中往往有人能看出85Hz刷新率和100Hz刷新率之间的区别,所以从保护眼睛的角度出发,刷新率仍然是越高越好。
行频 行频又称为“水平扫描频率”,指电子枪每秒在荧光屏上扫过的水平线的数量,其值等于“场频 × 垂直分辨率×1.04”,单位为KHz(千赫兹)。行频是一个综合分辨率和场频的参数,该值越大,显示器可以提供的分辨率越高,稳定性越好。
以 800*600 的分辨率、85Hz的场频为例,显示器的行频至少应为“600*85=51KHz”。
目前CRT显示器比较主流的行频系列是:70KHz,85(86)KHz,96KHz等。
windows是用场频和分辨率来表示显示模式,而Linux的X配置文件里面同时用到用场频和行频和分辨率三个参数。
警告:
老的或某些显示器缺乏保护电路,参数设置错误可能造成硬件损坏。
注:
窗体在桌面中显示不正,但在WINDWOS中显示正中。不调整显示器面板按钮办法:
(1)输入命令:xvidtune
(2)调整Left/Right;Up/Down
(3)test
(4)show 输出到终端中。
(5)apply
(6)复制输出内容至/etc/X11/xorg.conf中,在Section "Monitor"
中添加ModeLine 输出内容
在Section "Screen"中添加Model内容。
(6)重启X
详细如下:
# Xorg configuration created by system-config-display
Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us+inet"
EndSection
Section "Monitor"
#hsync range 0: 30.00 - 70.00
#vsync range 0: 50.00 - 160.00
Identifier "Monitor0"
ModelName "Samsung Samtron 76DF(X)/77DF(X)/78DF"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
ModeLine "1024x768" 94.5 1024 1088 1184 1376 768 769 772 808 +hsync +vsync
Option "dpms"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "nv"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 32
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768" "832x624" "800x600" "720x400" "640x480" "640x400" "640x350"
EndSubSection
EndSection
你可以写程序读该配置文件,然后用read读该配置文件中的分辨率,通过strstr判断分辨率的关键字。
shang12
2008-11-26
打赏
举报
回复
分别率..你不知道LINUX很多都是有配置文件的么?你应该去找找Xwindow里面的配置文件...不知对的对的窝..我以前有去改过但是忘了在哪了..
sfly47
2008-11-26
打赏
举报
回复
自己顶起来,各位大哥帮帮忙呀!
android2008
2008-11-26
打赏
举报
回复
不懂,帮顶
linux
6.5双屏显示,Redhat 6.5的
系统
如何设置双显示屏,
急
急
急
!
设置双显示器
分辨率
的方法:1、在桌面空白处点击右键选择Graphics Options->Output To可以看到双显示器有两种输出,分别是Clone Displays(双显复制)即两个显示器的显示内容完全一致,和Extended Desktop(扩展桌面)即另一显示器为主显示器的扩展,两个显示器可显示不同内容。2、如何设置双显复制:在桌面空白处,点击鼠标右键,选择‘Graphics Op...
CiteSpace入门指南:从零安装到高清图谱导出全流程详解
文献计量学是科学知识图谱绘制的基础方法,通过分析文献间的引用、共现等关系,揭示学科领域的知识结构与发展脉络。其核心原理在于将海量文献数据转化为可视化的网络图谱,节点代表文献、作者或关键词,连线表征它们之间的关系强度。这一技术能高效识别研究热点、关键文献与演进路径,极大提升文献综述与前沿探测的科研效率。在科研实践与学术论文写作中,科学知识图谱已成为不可或缺的分析工具。针对新手常遇到的软件安装报错、参数配置复杂及导出图片带水印等典型问题,本文以CiteSpace这一经典工具为例,详细拆解从环境部署、数据准备到图
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例五种PWM反馈控制模式研究
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例五种PWM反馈控制模式研究
Agent-Tool-Consent-Prompt-Auditor-v1.0-原创源码与文档.zip
原创本地工程审计与分析工具合集中的独立资源包。每个ZIP包含完整源码、3项自动化测试、可复现合成示例、离线HTML、JSON与SVG报告、1080×720真实运行效果图、README、运行说明、功能清单、MIT License及原创与授权声明。解压后进入project目录,执行npm test验证算法,执行npm run report生成报告,也可通过本地静态服务器打开网页。运行时零第三方依赖,不包含热点产品或开源项目源码、Logo、官方截图、论文、生产日志或其他受限素材。适合前端开发、AI应用工程、测试审计和课程实践。
企业如何快速找到合适的产学研合作资源?.docx
企业如何快速找到合适的产学研合作资源?
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章